Chrome Extension DOM完全加载

时间:2013-06-05 18:57:57

标签: javascript google-chrome google-chrome-extension

在尝试使用DOM之前,我尝试过多次尝试确保DOM已完全加载,我似乎永远无法让div计数匹配。

我的测试是,我打开dev工具打开页面,一旦页面完成,我打开控制台并运行相同的代码(document.getElementsByTagName('div')。length)然后它们就关闭!!

任何人都有任何线索?唯一可行的是当我设置超时时,我想尽量远离那个...除非那是唯一的解决方案,我已经搜索了文章并尝试了几种解决方案,但没有运气... < / p>

这里有一些尝试......

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发送消息然后

content.js

 chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
  console.log(response);
 });

background.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);
 });
 }
});

1 个答案:

答案 0 :(得分:0)

DOMContentLoaded - 可以在所有脚本处理完之前发生,所以如果你有任何添加了元素的JS,这可能会解释这个问题。

但是,我不明白你为什么遇到问题,你正在使用document_start做一些工作,但这是早做你正在做的事情的方法。我不确定你为什么不在DOMContentLoaded中包含与document_end相同的脚本中的逻辑......