【问题标题】:Message Event Handler Exist or not in window object消息事件处理程序是否存在于窗口对象中
【发布时间】:2014-06-22 14:14:24
【问题描述】:

我有一个包含 iframe 的 HTML 页面。如果消息来自 iframe,我必须处理它。但是如何检查消息事件处理程序是否存在?我的代码是

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

单击按钮时,此代码集消息事件处理程序。但是当再次点击时 - 再次添加消息处理程序。是否有任何方法可以知道窗口对象中是否存在消息事件处理程序。请指导。在我的情况下,我不能使用全局变量。如果可以从窗口对象中获取事件处理程序,请说明方法。

【问题讨论】:

    标签: javascript jquery iframe


    【解决方案1】:

    试试

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      相关资源
      最近更新 更多