【问题标题】:Find out which frame in DOM initiated a postMessage (in IE11)找出 DOM 中的哪个框架发起了 postMessage(在 IE11 中)
【发布时间】:2018-11-24 01:16:30
【问题描述】:

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

由于我知道这些内容因浏览器而异,所以我特意询问了 IE11。

【问题讨论】:

  • IE 11 现在还合法吗?
  • 不,我很清楚这个问题,但我想要找出发出给定消息的框架的身份。好吧,我希望,当我在消息处理程序中有断点时,能够跳转到发出导致此事件的 postMessage() 的代码行,但即使是帧的标识也足够了。

标签: javascript internet-explorer-11


【解决方案1】:

我找到了一种即使在跨域时也确实有效的方法——我通过在“添加观察”窗口中评估它来添加一个 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 并粘贴它,然后它执行后,你可以在 DOM 树中搜索FOOBAR FOOBAR

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2021-11-21
    相关资源
    最近更新 更多