我正在制作Google Chrome扩展程序。我的扩展程序目前扩展了内容区域和标题,以便为宝石容器中的另一个图标腾出空间(通知和好友请求的位置)并添加图标。首次加载页面时它可以正常工作,但是当您转到网站上的其他页面然后回到主页时,布局就会搞砸了。
由于这不是代码的问题(因为它在第一次加载页面时工作正常),我想知道是否有一种方法可以在每次加载页面时运行内容脚本。这是可能的,或者每次使用不同的方法加载时,我可以将Javascript注入到Facebook中吗?
答案 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": [
"*://*/*"
]
}
// your stuff
PS:此方法不适用于Chrome内部网页...