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