扩展程序脚本:
function newtab() {
chrome.tabs.create({"url":domain,"selected":true}, function(tab) {
//--
});
}
在我的扩展程序脚本中,我打开一个包含某个域的新标签页。我希望能够检查新选项卡中的dom是否已加载,然后在新选项卡中对dom执行某些操作。
我检查了Chrome扩展程序文档,但找不到任何合适的方法来实现它。
请成为我的指路明灯。
答案 0 :(得分:1)
Content Scripts是扩展程序中唯一可以访问/修改DOM的部分。
您可以使用所谓的Programmatic Injection将内容脚本添加到新打开的标签页中:
function newtab() {
chrome.tabs.create({"url":domain,"selected":true}, function(tab) {
chrome.tabs.executeScript(tab.id, {file: "content_script.js"});
});
}
.executeScript()
受run_at
parameter约束,默认为document_idle
。这可以保证脚本只在 static DOM完全加载后执行。
如果是动态DOM(页面的脚本在加载静态内容后创建更多DOM),甚至定义"标签都会加载"国家是有问题的。 Listening to DOM changes可以帮助您。
几点说明:
"*://*/*"
或"<all_urls>"
。"document_idle"
并不保证所有资源都已加载,例如<img>
标记可能已存在但图像尚未加载。有关详细信息和建议,请参阅run_at
文档。.executeScript()
的回调,这可能是将一些回复传递回脚本的最简单方法,但请确保您了解signature of the expected callback。