每次页面加载Google扩展程序时运行内容脚本?

时间:2011-11-15 05:47:37

标签: javascript jquery google-chrome google-chrome-extension

我正在制作Google Chrome扩展程序。我的扩展程序目前扩展了内容区域和标题,以便为宝石容器中的另一个图标腾出空间(通知和好友请求的位置)并添加图标。首次加载页面时它可以正常工作,但是当您转到网站上的其他页面然后回到主页时,布局就会搞砸了。

由于这不是代码的问题(因为它在第一次加载页面时工作正常),我想知道是否有一种方法可以在每次加载页面时运行内容脚本。这是可能的,或者每次使用不同的方法加载时,我可以将Javascript注入到Facebook中吗?

3 个答案:

答案 0 :(得分:1)

据我了解,每次加载页面时都会正确注入代码,但是当用户选择不同的选项卡然后返回时,您需要再次运行代码吗?

查看Page Visibility API。您可以听取visibilitychange事件并再次运行代码。

答案 1 :(得分:0)

通过使用setInterval()每毫秒运行代码(或至少代码并不总是运行),我找到了解决这个问题的方法。

显然,除非我误解,否则Chrome会在每个浏览器会话中运行一次代码,因此使用setInterval()是最佳选择。虽然,奇怪的行为是Chrome一次运行我的代码的一部分,然后除非某些情况得到满足,否则不会在那之后。

但是,

setInterval()在这种情况下创造了奇迹。

答案 2 :(得分:0)

您应该将脚本作为内容脚本添加到清单文件中。后台页面每个浏览器会话只执行一次。

清单:

{
  "name": "",
  "version": "",
  "description": "",
  "icons": { "16": "icon16.png",
           "48": "icon48.png",
           "128": "icon128.png"},
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["go.js"],
      "all_frames":true
    }
  ],
  "permissions": [
    "*://*/*"
  ]
}

内容脚本文件(go.js):

// your stuff

PS:此方法不适用于Chrome内部网页...