我正在尝试使用 WebExtensions 编写我的第一个 Firefox 插件(第一个扩展非常复杂)。我需要处理会话中所有 Google 搜索的结果(会话 = 使用同一 Google 页面的查询)。我有以下代码:
清单.json:
{
"manifest_version": 2,
"name": "MyAddon",
"version": "0.0.1",
"description": "My Add-on",
"icons": {
"48": "icons/icon-48.png"
},
"applications": {
"gecko": {
"id": "myaddon@local",
"strict_min_version": "42.0"
}
},
"content_scripts": [
{
"matches": ["*://www.google.com/*"],
"js": ["index.js"]
}
]
}
index.js:
var pageUrl = window.location.href;
var req = new XMLHttpRequest();
req.open("GET", pageUrl, true);
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
handleResponse(req.responseText);
};
};
req.send();
function handleResponse(pageContent) {
// Do some processing ...
}
它正是我第一次搜索所需的(使用地址栏)。但是,加载项会在我第一次进入 Google 页面时加载,执行它必须执行的操作,然后停止。只有当我刷新页面或从地址栏进行另一个查询时它才会重新加载。
当我使用搜索字段进行另一次搜索并再次进行处理时,我需要找到一种重新加载加载项的方法,但不会丢失以前搜索的工作。我想我必须使用 cookie,但我还没有。
我尝试使用req.addEventListener("load", someFunction)
instead of/besides req.onreadystatechange()
,但并没有解决问题。有任何想法吗?
谢谢!