Javascript 每次使用Google扩展加载页面时运行内容脚本?
我正在做谷歌浏览器的扩展。“我的扩展”当前扩展了内容区域和标题,为jewel容器中的另一个图标(通知和好友请求所在的位置)腾出空间,并添加了该图标。第一次加载页面时效果很好,但是当你转到站点上的另一个页面,然后回到主页时,布局就会出错Javascript 每次使用Google扩展加载页面时运行内容脚本?,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我正在做谷歌浏览器的扩展。“我的扩展”当前扩展了内容区域和标题,为jewel容器中的另一个图标(通知和好友请求所在的位置)腾出空间,并添加了该图标。第一次加载页面时效果很好,但是当你转到站点上的另一个页面,然后回到主页时,布局就会出错 由于这不是代码的问题(因为它在第一次加载页面时工作正常),我想知道是否有一种方法可以在每次加载页面时运行内容脚本。这是可能的,还是我可以在每次加载Facebook时用不同的方法将Javascript注入其中?据我所知,每次加载页面时都会正确地注入代码,但当用户选择
由于这不是代码的问题(因为它在第一次加载页面时工作正常),我想知道是否有一种方法可以在每次加载页面时运行内容脚本。这是可能的,还是我可以在每次加载Facebook时用不同的方法将Javascript注入其中?据我所知,每次加载页面时都会正确地注入代码,但当用户选择不同的选项卡后返回时,您需要再次运行代码
看一看这张照片。你可以。你应该能够监听
visibilitychange
事件,然后再次运行你的代码。据我所知,每次加载页面时,你的代码都会正确地被注入,但当用户选择不同的选项卡后返回时,你需要再次运行代码吗
看一看这张照片。你可以,你应该能够监听
visibilitychange
事件并再次运行你的代码。我找到了一种解决方法,使用setInterval()
每毫秒运行一次代码(或者至少是不总是运行的代码)
显然,除非我误解了,否则Chrome会在每个浏览器会话中运行一次代码,因此使用setInterval()
是最好的选择。不过,奇怪的是,Chrome曾经运行过我的部分代码,之后就不再运行了,除非满足某些条件
setInterval()
在这种情况下创造了奇迹。我找到了一种解决方法,使用setInterval()
每毫秒运行一次代码(或者至少是不总是运行的代码)
显然,除非我误解了,否则Chrome会在每个浏览器会话中运行一次代码,因此使用setInterval()
是最好的选择。不过,奇怪的是,Chrome曾经运行过我的部分代码,之后就不再运行了,除非满足某些条件
setInterval()
在这种情况下发挥了神奇的作用。您应该将脚本作为内容脚本添加到清单文件中。每个浏览器会话只执行一次后台页面
显示:
备注:此方法在Chrome内部页面上不起作用…您应该将脚本作为内容脚本添加到清单文件中。每个浏览器会话只执行一次后台页面 显示:
PS:这种方法在Chrome内部页面上不起作用…不完全是这样——切换选项卡会保留第一次注入代码时的结果。我需要的是,当点击Facebook按钮时,或者当点击主页时,从Facebook上的任何页面再次运行它。出于某种原因,我的脚本的一部分会自动“撤销”,而其他部分会保留第一次注入的结果。哦,你是说当Facebook加载带有AJAX的页面时,它们会破坏/删除你的一些更改?使用并检查您的更改是否已恢复。根据需要添加回去。
onpopstate
和onhashchange
都没有效果。事实上,onhashchange
开始破坏配置文件。您可能只需要每隔一秒钟检查一下location.pathname
是否已更改,以及它是否已检查您的修改。不完全是这样——切换选项卡会保留第一次注入代码时的结果。我需要的是,当点击Facebook按钮时,或者当点击主页时,从Facebook上的任何页面再次运行它。出于某种原因,我的脚本的一部分会自动“撤销”,而其他部分会保留第一次注入的结果。哦,你是说当Facebook加载带有AJAX的页面时,它们会破坏/删除你的一些更改?使用并检查您的更改是否已恢复。根据需要添加回去。onpopstate
和onhashchange
都没有效果。事实上,onhashchange
开始破坏配置文件。你可能只需要每隔一秒钟检查一下location.pathname
是否已更改,以及它是否已检查你的修改。我以前曾将其用作内容脚本,但那更糟。我将它改为从后台页面运行,这使问题稍微好了一点(通常情况下,它实际上正在运行)。我以前将它用作内容脚本,但这更糟。我将其更改为从后台页面运行,这使问题稍微好一点(通常情况下,它实际上正在运行)。
{
"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