1
我正在构建Chrome扩展,并且想要将JavaScript代码注入并运行到选项卡中。当选项卡更改URL或重新加载时使用chrome.tabs.executeScript
例如:
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上执行,应该输入并搜索“测试”,然后点击第一个结果。
问题是,在提交请求后,该选项卡将更改其URL并因此加载另一个页面。而且似乎在页面加载时,由chrome.tabs.executeScript
注入的所有脚本消失。
有没有办法通过同一个标签中的不同页面运行单个脚本?
我的扩展程序应该允许用户运行自己的脚本,因此它很复杂(也许不可能?)事先知道脚本的哪一点需要重新加载(为了使用多个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"
}
}
有没有办法知道当'onUpdated'被触发时脚本是在哪一点?正如我所说,我不知道脚本中的哪个位置会导航。 – Seeven 2014-09-26 12:26:06
在'onUpdated'处,(内容)脚本不再存在。 – Xan 2014-09-26 12:32:47
总而言之,如果您解释任意用户代码,您的问题似乎非常广泛。 – Xan 2014-09-26 12:34:09