作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个 Chrome 扩展程序,我想将 Javascript 代码注入(inject)并运行到一个选项卡中。
例如:
chrome.tabs.query({active: true, lastFocusedWindow: true}, function(selectedTab) {
chrome.tabs.executeScript(selectedTab[0].id, {code: code_});
});
code_
变量为:
$('#gbqfq').val('test');
$("#gbqf").submit();
$('#rso > div.srg > li:nth-child(1) > div > h3 > a').click();
这个简单的脚本旨在在 google.com 上执行,应该键入并搜索“test”并点击第一个结果。
问题是提交请求后,选项卡更改其 URL,从而加载另一个页面。似乎当页面加载时,所有由 chrome.tabs.executeScript
注入(inject)的脚本都消失了。
有没有办法在同一个选项卡的不同页面上运行单个脚本?
我的扩展应该允许用户运行他自己的脚本,所以提前知道选项卡预计在脚本的哪个点重新加载是很复杂的(也许不可能?)(为了使用多个 chrome .tabs.executeScript
调用)。
这是我的扩展的 manifest.json,我只使用了一个弹出窗口(没有背景,没有 content_scripts):
{
"manifest_version": 2,
...
"options_page": "options.html",
"permissions": [
"storage",
"unlimitedStorage",
"tabs",
"windows",
"http://*/*",
"https://*/*"
],
"browser_action":
{
"default_popup": "popup.html"
}
}
最佳答案
不,您不能在标签页导航离开后运行相同的脚本,因为脚本所在的 JavaScript 上下文已被拆除。
因此您需要在页面加载后再次注入(inject)脚本。你可能想按照这些思路做一些事情:
chrome.tabs.onUpdated
按上面的标签 ID 和状态 “完成”
过滤。关于javascript - 当选项卡更改 URL 或重新加载时使用 chrome.tabs.executeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057571/
我是一名优秀的程序员,十分优秀!