首页 > 解决方案 > 找出 DOM 中的哪个框架发起了 postMessage(在 IE11 中)

问题描述

在 JavaScript 中,一旦我收到“消息”事件,有没有办法找出 DOM 模型中的哪个框架启动了它?这在调试大型 Web 应用程序时会很有帮助,其中特定消息可能来自 15-20 帧中的任何一个。message 事件有一个 source 属性,但如果框架是跨域的,则不可访问:

在此处输入图像描述

因为我知道这些东西因浏览器而异,所以我专门询问 IE11。

标签: javascriptinternet-explorer-11

解决方案


我找到了一种即使跨域也能正常工作的方法——我通过在“添加观察”窗口中评估它来添加一个 DOM 元素。然后我在 DOM 树中搜索该元素,并以这种方式找出框架。

例如,此代码有效:

var foo_btn = document.createElement("BUTTON"); var foo_t = document.createTextNode("FOOBAR FOOBAR"); foo_btn.appendChild(foo_t); document.body.appendChild(foo_btn);

您只需单击 Add Watch 并粘贴它,然后在它执行后,您可以FOOBAR FOOBAR在 DOM 树中搜索。

在此处输入图像描述


推荐阅读