如何在页面重新加载后从内容脚本 access/bind 到 DOM?
How to access/bind to DOM from content script after page reloads?
我有一个 chrome 扩展,其中页面从内容脚本中重新加载。内容脚本正在 运行 使用我的 popup.js
在当前活动选项卡上的 chrome.tabs.executeScript()
。
重新加载后,我无法从内容脚本绑定到 window 的滚动事件。有没有办法重新捕获重新加载的 DOM 以绑定到滚动事件?
更新:
popup.js
chrome.tabs.executeScript(null, { file: 'sendArticleLength.js', allFrames: true}, function(result) {
count = result;
chrome.tabs.reload(targetTabID, function() {
chrome.tabs.executeScript({file: 'sendRemainingTime.js', allFrames: true}, function(){
chrome.tabs.sendMessage(targetTabID, {wordcount:count});
});
});
sendRemainingTime.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if(request.wordcount) {
wc = request.wordcount;
window.onscroll = function(){
alert('scrolled!');
}
}
});
在 sendRemainingTime.js 中,我想在 popup.js 中触发的重新加载完成后绑定到 onscroll 事件。但目前,onscroll 在重新加载之前绑定。
更新:
正如调试显示的那样,真正的问题是其他问题 :-) 即,使用 var location =
分配实际上重新加载了页面以及 chrome.tabs.reload
立即执行其回调而不等待的事实实际重新加载的页面,因此 chrome.tabs.onUpdated
侦听器解决了问题。
我有一个 chrome 扩展,其中页面从内容脚本中重新加载。内容脚本正在 运行 使用我的 popup.js
在当前活动选项卡上的 chrome.tabs.executeScript()
。
重新加载后,我无法从内容脚本绑定到 window 的滚动事件。有没有办法重新捕获重新加载的 DOM 以绑定到滚动事件?
更新:
popup.js
chrome.tabs.executeScript(null, { file: 'sendArticleLength.js', allFrames: true}, function(result) {
count = result;
chrome.tabs.reload(targetTabID, function() {
chrome.tabs.executeScript({file: 'sendRemainingTime.js', allFrames: true}, function(){
chrome.tabs.sendMessage(targetTabID, {wordcount:count});
});
});
sendRemainingTime.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if(request.wordcount) {
wc = request.wordcount;
window.onscroll = function(){
alert('scrolled!');
}
}
});
在 sendRemainingTime.js 中,我想在 popup.js 中触发的重新加载完成后绑定到 onscroll 事件。但目前,onscroll 在重新加载之前绑定。
更新:
正如调试显示的那样,真正的问题是其他问题 :-) 即,使用 var location =
分配实际上重新加载了页面以及 chrome.tabs.reload
立即执行其回调而不等待的事实实际重新加载的页面,因此 chrome.tabs.onUpdated
侦听器解决了问题。