我要解決以下問題: 我有一個彈出窗口,並在那裏有popup.html
一個選擇標籤:如何正確傳遞數據到contentscript?
<select id="chart_select">
<option id="chart_0" value="default">Select One</option>
<option id="chart_1" value="table_1">DISPLAY CLIENT VERSION USAGE CHART</option>
<option id="chart_2" value="table_2">DISPLAY MOST ACTIVE REALMS CHART</option>
<option id="chart_3" value="table_3">DISPLAY MOST ACTIVE USERS CHART</option>
<option id="chart_4" value="table_4">DISPLAY AVERAGE USER FRAMERATE CHART</option>
<option id="chart_5" value="table_5">DISPLAY AVERAGE REALM FRAMERATE CHART</option>
<option id="chart_6" value="table_6">DISPLAY USER LOGGED IN '' TIMES CHART</option>
<option id="chart_7" value="table_7">DISPLAY LOGINS per ORGANISATION</option>
</select>
所以,我保存到localStorage['thetable']
選定的價值。例如,我選擇DISPLAY LOGINS per ORGANISATION
,然後我將"table_7"
保存到本地存儲。
然後,在background.html
我想從localStorage的數據傳遞給我的內容腳本,像這樣:
if(localStorage.getItem('thetable') != ""){
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {thetable: localStorage.getItem('thetable') }, function(response) {
if(response.dom != ""){
localStorage.setItem('thedom',response.dom);
}
});
});
}
在此之後,我contentscript應該捕獲請求,併發回與DOM,響應其已由id指定,存儲在localStorage('thetable')中。
contentscript.js:
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.thetable != "") {
sendResponse({dom: document.getElementById(request.thetable).innerHTML});
}
});
注:request.thetable
應該是 「table_7」。 dom應該是該網站的<table id="table_7">
的innerHTML。它存在,我做了所有這些元素。
另外一個信息,我保存選擇值在不同的文件中,在popup.js
,我保存「table_7」localStorage在這個文件中。但localStorage也可以從background.html獲得,所以我認爲它不應該是一個問題。
流程:
- 我選擇的東西(FE:每個組織DISPLAY LOGINS)
- 我
popup.html
點擊"Save Btn"
,然後popup.js
節省 「table_7」 到localStorage的 然後我點擊「運行Btn」
popup.html
,然後popup.js
重新加載 當前標籤:chrome.tabs.getSelected(null,function(tab){ chrome.tabs.reload(tab.id); });
我這樣做,因爲我的內容收集信息只有當標籤是 重新加載。
重裝之後,我想,
background.html
應該發送請求contentscript
與info( 「table_7」)contentscript得到DOM,從網站,FE:
document.getElementById("table_7").innerHTML
併發送回這backgound頁。
的問題是,我得到這個警告,當我運行的流程:
有人可以幫我,如何解決這個問題? :/感謝
而不是重新加載標籤來激活內容腳本,我建議使用['chrome.tabs.executeScript(tab.id,{文件:「name_of_script.js」}); '](http://code.google.com/chrome/extensions/tabs.html#method-executeScript)運行內容腳本。 –
然後我得到'在錯誤期間tabs.executeScript:未知的錯誤。 chromeHidden.handleResponse'在控制檯中。順便說一下,如何強制後臺腳本發送請求? –
你能發佈一個最小的測試用例(包括清單文件的相關部分)嗎? –