注入脚本执行多次

时间:2010-07-10 18:03:21

标签: safari safari-extension

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

  

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

我很想知道:

  1. 除了iframe之外,还有哪些其他元素有“HTML源”(图片?对象?)? “HTML源代码”这个词让我耳目一新。
  2. 有没有办法检测哪个元素正在执行脚本?
  3. 我已按照推荐的方式确定window === window.top来过滤掉iframe,但其他元素仍在执行脚本,并且执行 lot 比我想要的更多。

    感谢。

2 个答案:

答案 0 :(得分:2)

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

无论如何,在旅途中寻找解决方案,I asked a question on Apple's dev forum并包含以下一些关键信息:

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

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

答案 1 :(得分:0)

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