Message Event Handler Exist or not in window object

妖精的绣舞 提交于 2019-12-25 02:30:03

问题


i have a page in html contains iframe.if message comes from iframe i have to handle it.but how to check if message event handler exist or not my code is

$(window).on('message',function(e){
console.log(e.originalEvent.data);
}); 

when button is clicked this code set message event handler.but when again clicked again message handler get added .Is there any method to know if in window object is message event handler present or not.Please guideline.i can't use global variable in my case.if its possible to get event handler from window object then please explain the method.


回答1:


Try

$(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/



来源:https://stackoverflow.com/questions/24352108/message-event-handler-exist-or-not-in-window-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!