我正在构建Chrome扩展程序,我想将Javascript代码注入并运行到选项卡中。
例如:
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
注入的所有脚本都会消失。
有没有办法在同一个标签页中的不同页面上运行单个脚本?
我的扩展程序应该允许用户运行自己的脚本,因此事先知道选项卡应该重新加载的脚本的哪一点很复杂(可能不可能?)(为了使用多个{{1} }来电)。
这是我的Extension的manifest.json,我只使用弹出窗口(没有背景,没有content_scripts):
chrome.tabs.executeScript
答案 0 :(得分:2)
不,在选项卡导航后,您无法运行相同的脚本,因为脚本所在的JavaScript上下文已被拆除。
因此,您需要在页面加载后再次注入脚本。 你可能想要沿着这些方向做点什么:
chrome.tabs.onUpdated
过滤的"complete"
。