首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firefox window.event无法存活传递给context.apply()

Firefox window.event无法存活传递给context.apply()
EN

Stack Overflow用户
提问于 2013-11-27 18:57:01
回答 1查看 561关注 0票数 0

-This是posterity-最初的问题

我写的一段新代码有点麻烦。我试图找到发送信息的窗口iframe,假设它是从iframe发出的。有关守则:

代码语言:javascript
复制
var getContainingFrame = function(source){
    var frames = document.getElementsByTagName('iframe');
    for (var i = 0; i < frames.length; ++i) {
        if (frames[i].contentWindow === source) {
            return frames[i];
        }
    }
    return false;
}
var postMessageReceivedCallback = function(event){
    getContainingFrame(event.source);
}
window.addEventListener("message", postMessageReceivedCallback, false);

Chrome/Safari运行良好,但是每次火狐都与第一个frame相匹配。(iframe.contentWindow === window,不管哪个window)。实际上,我最初从另一篇文章here中找到了如何做到这一点,尽管他们没有提到火狐的问题。

每个iframe都有不同的src。

是否有不同的方法来匹配这些?我做了什么明显的错事吗?

,不,jQuery,谢谢。

谢谢

更好的问题:

我的事件是通过窗口对象通过function.apply(window, params)传递的,期望它应用到的函数中可以使用window.event --这在Chrome/Safari中是可行的,在FF中则不然。我如何让事件在FF中传递?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 13:39:00

代码语言:javascript
复制
var someFunction = function(params){
    this.event.source //expect this to be the window the event originated in
    //... do something, like the iframe check
}
var postMessageReceivedCallback = function(event){
    //FF not keeping the event reference on the window that other browsers are,
    //so we add it ourselves from the event object passed by the message event.
    window.event = event;
    someFunction.apply(window, event.message);
}
window.addEventListener("message", postMessageReceivedCallback, false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20250774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档