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