我正在开发一个Chrome扩展程序,它会监听域名上的网址更改,当网址与模式匹配时,会向DOM附加一些HTML。
我的manifest.json看起来像这样:
{
"name": "Append to DOM",
"description": "Testing",
"version": "1",
"manifest_version": 2,
"content_scripts": [
{
"matches": [
"http://www.somedomain.com/*"
],
"js": [
"content.js"
]
}
],
"permissions": ["tabs", "activeTab"]
}
和content.js看起来像这样:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.url == 'http://www.somedomain.com/matching-pattern') {
var myDiv = document.createElement("div");
myDiv.innerHTML = 'SAMPLE HTML';
document.body.appendChild(myDiv);
}
});
但是,更新网址时,侦听器不会触发(并且不会附加div)。
感谢任何帮助。
答案 0 :(得分:1)
内容脚本无法访问chrome.tabs
您可以在后台脚本中使用chrome.tabs
为了处理内容脚本中URL的更改,最便宜的解决方案始终有效 - 使用setInterval
var prevURL = '';
setInterval(function() {
if (document.location.href != prevURL) {
// do something
prevURL = document.location.href;
}
}, 1000);