2014-06-22 3 views
0

가 포함되어 내가 어떻게 메시지 이벤트 핸들러가 존재 여부를 내 코드메시지 이벤트 핸들러는 메시지가 iframe을에서 오는 iframe.if 내가 HTML의 페이지를

$(window).on('message',function(e){ 
console.log(e.originalEvent.data); 
}); 
있는지 확인로 해하지 처리해야 window 객체에 존재 여부

이 코드를 클릭하면 메시지 이벤트 핸들러가 설정됩니다. 다시 다시 클릭하면 메시지 핸들러가 추가됩니다. 윈도우 오브젝트가 메시지 이벤트 핸들러인지 여부를 알려주는 메소드가 있습니까? 사용하지 마세요. 글로벌 변수 내 case.if 가능한 경우 창 개체에서 사건 처리기를 얻을 수있는 방법을 설명하시기 바랍니다.

답변

0

는 시도

$(function() { 
    $("body").text("click"); 
    // `message` `handler` 
    window.msgHandler = function (e) { 
     if (e.origin === "http://fiddle.jshell.net") { 
      console.log(e, e.data); 
     }; 
    }; 
    window.addEventListener('message', msgHandler, false); 
    var iframe = $("<iframe>", { 
      "width": "150px", 
      "height": "150px", 
      "target": "_top" 
    }); 
    $(iframe).one("load", function (e) { 
     var _data = $(e.target)[0].nodeName + " loaded at " + e.timeStamp; 
     window.postMessage(_data, "http://fiddle.jshell.net"); 

     $(e.target) 
      .contents() 
      .find("html") 
      .html("<html><body><div>" 
        + _data 
        + "</div><br /></body></html>"); 
     return false 
    }); 
    var loadFrame = function (e) { 
     // if in window object is message event handler present or not 
     console.log("msgHandler" in window 
        ? [ window.msgHandler 
         , window.msgHandler.toString() 
         , typeof window.msgHandler ] 
        : false); 
     $(e.target) 
      .text("") 
      .append($(iframe)) 
    }; 

    $(window).one("click", loadFrame); 
}); 

jsfiddle http://jsfiddle.net/guest271314/9xC27/

관련 문제