0

我需要在我的扩展中的DevTool控制台的Elements窗口中找到的源代码。我尝试使用内容脚本如何在Chrome扩展中从网站获取满载的HTML源代码

var text = document.documentElement.innerHTML; 

注射的擦肩而过,“完整”的状态之后,从chrome.tabs.onUpdated.addListener,但我只recived的HTML代码,而动态创建的内容。

特别是我希望我的扩展能够动态地添加所有“div”。

任何帮助将不胜感激!

回答

0

一旦加载了初始页面内容,将触发complete事件。它与动态生成的内容没有任何关系,否则它将不得不无限期地等待,因为更多的内容可能会随后添加。

如果您对特定元素感兴趣,可以使用setTimeout定期轮询元素。像这样:

function getElement() { 
    return new Promise(function(res, rej) { 
     var interval = setInterval(function() { 
      var elm = document.getElementById('the-element-you-want'); 
      if(elm){ 
       clearInterval(interval); 
       res(elm); 
      } 
     }, 10); 
    }); 
} 

另一种选择是使用一个MutationObserver所需元件(一个或多个)已被创建时被检测到。

+0

我不知道元素的名称,但我需要搜索通常包含在iframe或div中的特定文本。另外,我需要的是自状态==完成后生成的内容。 我需要解析一些匹配的整个文本(我通常需要的不是在基本的DOM,但显示在页面上)。我希望我明确自己。 事实是,我看到一些不同之间的网站的DOM和我实际看到的页面! 谢谢! –

+0

@EugenioNerioNemmi在这种情况下,您可以使用'setTimeout'定期检查文本是否存在。或者,使用'mutationObserver',检查所有新元素以查看它们是否包含所需的文本。一旦知道文本存在,就可以继续解析整个DOM。 – levi

+0

解决了!非常感谢你,你很有帮助! –

相关问题