在尝试使用 DOM 之前,我已经尝试了几次确保 DOM 完全加载,但我似乎永远无法让 div 计数匹配。
我的测试是,我在打开开发工具的情况下运行页面,一旦页面完成,我打开控制台并运行相同的代码(document.getElementsByTagName('div').length)并且它们关闭了!
有人有任何线索吗?唯一似乎可行的事情是当我设置超时时,我想尽量远离那个......除非那是唯一的解决方案,否则我已经搜索了文章并尝试了几种解决方案,但没有运气......
这里有一些尝试......
1)清单文件有 content_scripts/run_at :“document_start”
document.addEventListener('DOMContentLoaded', function () {
var count = document.getElementsByTagName('div').length;
console.log(count);
}, true);
2) 清单文件有 content_scripts/run_at : "document_end"; 我基本上向 background.js 发送消息,然后将消息发送回运行功能。
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response);
});
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
console.log(request);
divCount();
});
function divCount() {
var count = document.getElementsByTagName('div').length;
console.log(count);
}
2) 清单文件有 content_scripts/run_at : "document_end"; 我基本上向 background.js 发送消息,然后
内容.js
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response);
});
背景.js
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
chrome.tabs.executeScript(null, {
code: "console.log($('div').length)"
}, function(data) {
console.log(data);
});
});
我也试过这个:
chrome.tabs.onUpdated.addListener(function( tabId , info ) {
console.log(tabId, info);
if ( info.status == "complete" ) {
chrome.tabs.executeScript(null, {
code: "console.log($('div').length)"
}, function(data) {
console.log(data);
});
}
});