我想解决以下问题:我有一个弹出窗口,popup.html
里面有一个选择标签:
<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
我想将数据从本地存储传递到我的内容脚本,如下所示:
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 应该捕获请求,并用存储在 localStorage('thetable') 中的 id 指定的 dom 发送回响应。
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 per ORGANISATION)
- 我点击
"Save Btn"
,popup.html
然后popup.js
将“table_7”保存到localStorage 然后我单击“运行 Btn”
popup.html
,然后popup.js
重新加载当前选项卡:chrome.tabs.getSelected(null, function(tab) { chrome.tabs.reload(tab.id); });
我这样做,因为我的 contentscript 仅在重新加载选项卡时收集信息。
重新加载后,我认为
background.html
应该将请求发送到contentscript
信息(“table_7”)contentscript 从站点 fe: 获取 DOM,
document.getElementById("table_7").innerHTML
并将其发送回后台页面。
问题是,当我运行流程时,我会收到此警报:
有人可以帮助我,如何解决这个问题?:/ 谢谢