1

我已阅读文档并了解这是可以预期的:

脚本被注入顶级页面和任何具有 HTML 源的子页面,例如 iframe。不要假设每个浏览器选项卡只有一个脚本实例。

不过,我想知道:

  1. 除了 iframe,还有哪些其他元素具有“HTML 源”(图像?对象?)?“HTML 源代码”这个词在我听来含糊不清。
  2. 有没有办法检测哪个元素正在执行脚本?

我已经按照建议通过确定 过滤掉了 iframe window === window.top,但是其他元素仍在执行脚本,并且执行的次数比我想要的要多得多。

谢谢。

4

2 回答 2

2

我回答自己的问题真的是我自己的错,因为我没有在我的问题中提供足够的信息。在我的辩护中,我当时并不知道我提供的信息太少。

无论如何,在寻找解决方案的过程中,我在 Apple 的开发论坛上提出了一个问题,并提供了以下一些关键信息:

  • 脚本中的所有内容都发生在(或应该)的beforeload事件中。document

我了解到的是,该beforeload事件仅针对文档中的子资源触发。不适用于文档(或窗口)本身。我删除了事件处理程序并确保该脚本被应用为启动脚本(它是)。我已经将窗口的测试应用为顶部窗口,所以我被覆盖了。现在我的注入脚本只触发一次。

于 2010-07-16T18:25:35.873 回答
1

其他 HTML 源可能是框架或对象标签(带有 HTML 内容)。我不认为它可以是其他任何东西。但是,据我所知,它们也应该被过滤掉window === window.top。尝试console.log使用document.location变量来查看哪个 URL 运行您注入的脚本,也许您可​​以找到加载它们的内容。

于 2010-07-15T04:35:34.233 回答