首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开新选项卡并在新选项卡上执行操作

打开新选项卡并在新选项卡上执行操作
EN

Stack Overflow用户
提问于 2016-07-17 09:10:48
回答 1查看 1K关注 0票数 0

扩展脚本:

代码语言:javascript
复制
function newtab() {
    chrome.tabs.create({"url":domain,"selected":true}, function(tab) {
        //--
    });
}

在我的扩展脚本中,我打开了一个带有某个域的新选项卡。我希望能够检查新选项卡中的dom是否已加载,然后在新选项卡中对dom执行一些操作。

我检查了chrome扩展文档,但找不到任何适当的方法来实现它。

请给我指路灯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-18 13:08:39

内容说明是扩展中唯一能够访问/修改DOM的部分。

您可以使用所谓的程序化注入向新打开的选项卡添加内容脚本:

代码语言:javascript
复制
function newtab() {
    chrome.tabs.create({"url":domain,"selected":true}, function(tab) {
        chrome.tabs.executeScript(tab.id, {file: "content_script.js"});
    });
}

.executeScript()参数约束,默认为document_idle。这保证了脚本只有在静态DOM完全加载之后才会执行。

对于动态DOM (页面脚本在加载静态内容之后创建更多DOM ),甚至定义“选项卡加载”状态也有问题。侦听DOM更改可以帮你。

几个注意事项:

  • 对新页面的编程注入需要页面的主机权限。如果您事先不知道域,您将需要广泛的权限,如"*://*/*""<all_urls>"
  • "document_idle"并不保证所有资源都被加载,例如,<img>标记可能已经存在,但映像尚未加载。有关详细信息和建议,请参阅run_at文档。
  • 您可以对.executeScript()使用回调,这可能是将一些答复传递回脚本的最简单方法,但请确保您理解预期回调的签名
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38419626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档