Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取对发布给定消息的iframe的引用?_Javascript_Postmessage - Fatal编程技术网

Javascript 如何获取对发布给定消息的iframe的引用?

Javascript 如何获取对发布给定消息的iframe的引用?,javascript,postmessage,Javascript,Postmessage,主窗口正在从嵌套在其中的iframe接收消息 window.addEventListener("message", function(e){ alert(e.data); }, true); 我如何知道消息来自哪个DOM元素?问题是,我在文档中有几个,它们都来自同一个域,但与主窗口的域不同。在消息传递代码(可能还有其他代码)的Firefox实现中,事件对象具有可以检查的“uri”和“域”属性,以及“源”属性,该属性引用原始窗口对象 window.addEventListener("messa

主窗口正在从嵌套在其中的iframe接收消息

window.addEventListener("message", function(e){
 alert(e.data);
}, true);

我如何知道消息来自哪个DOM元素?问题是,我在文档中有几个,它们都来自同一个域,但与主窗口的域不同。

在消息传递代码(可能还有其他代码)的Firefox实现中,事件对象具有可以检查的“uri”和“域”属性,以及“源”属性,该属性引用原始
窗口
对象

window.addEventListener("message", function(e){
    var frames = window.frames;
    for (var i = 0; i < frames.length; ++i)
        if (frames[i] === e.source) {
            // found it ...
        }
}
window.addEventListener(“消息”,函数(e){
var frames=window.frames;
对于(变量i=0;i
我认为chrome在这方面有一个长期的缺陷,源属性未定义。是的,刚刚用13.0.767.1.dev-m确认了它。有了这个缺陷,发送消息的整个想法失去了意义。好吧,你仍然可以检查域和URI,而且没有任何东西可以阻止其他窗口向自己传递引用我刚刚在iOS 14、Firefox 85和Chrome 89中签入Safari——使用“source”属性现在似乎是一种有效的跨浏览器技术,可以将iframe与事件匹配起来