我正在构建chrome扩展程序,我需要创建一个函数来检测URL的更改,例如将youtube.com
更改为youtube.com/watch?v={some video id}
我一直在寻找在Content.js
上执行此操作的方法,但显然这是不可能的,在这种情况下,我需要使用background.js
首先我植入了这个部分
chrome.webNavigation.((EVENT)).addListener(function() {
alert("worked");
});
要测试chrome是否可以正确检测到URL更改,则需要将其连接到content.js
到Ajax
到URL
的位置,并从JSON
返回对象。服务器
我在此页面上看到Chrome Extension - webNavigation多个可以使用的事件
事件
onBeforeNavigate
onCommitted
onDOMContentLoaded
onCompleted
onErrorOccurred
onCreatedNavigationTarget
onReferenceFragmentUpdated
onTabReplaced
onHistoryStateUpdated
当我访问(重新加载或访问单个页面)时,Alert
多次弹出(有时是1-4次)时,它们均无法正常工作
我不知道该怎么办,或者是否有其他方法可以解决这样的问题,我对chrome扩展和JS
还是陌生的。
background.js
chrome.storage.sync.get( "extensionSwitch", function(data){
if( data[ "extensionSwitch" ] == undefined ){
chrome.storage.sync.set( { "extensionSwitch" : "true" }, function() { } );
}
});
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
fetch(request.input, request.init).then(function(response) {
return response.text().then(function(text) {
sendResponse([{
body: text,
status: response.status,
statusText: response.statusText,
}, null]);
});
}, function(error) {
sendResponse([null, error]);
});
return true;
});
chrome.webNavigation.onHistoryStateUpdated.addListener(function() {
alert("worked");
});