首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Chrome扩展打开chrome://newtab

从Chrome扩展打开chrome://newtab
EN

Stack Overflow用户
提问于 2013-02-07 00:23:44
回答 2查看 1.9K关注 0票数 1

我试着编写一个Google扩展,当我在短时间内单击左右键时,它只会打开一个新的选项卡。JavaScript没有问题,但我将其实现为"content_scripts“脚本。

在其他一些线程中,我读到无法从content_scripts访问chrome.* API( chrome.extension API除外)。

即使没有必要访问chrome.tabs API来打开一个新窗口(window.open应该做这个工作),但我似乎需要它来打开一个带有新选项卡页的新选项卡,显然通过window.open是不可能的。

所以我真的想不出什么是最好的方法。我可以使用一个背景页面,我可以从content_script调用,但我认为应该有一个更简单的方法,我只是不明白。

有人有主意吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-07 00:40:05

我认为您的内容脚本必须向后台页面发送消息才能调用chrome.tabs.create --内容脚本不能使用chrome,也不能直接与后台页面通信。

下面是一个关于在Chrome扩展中传递消息的参考文献,以了解更多细节,但下面是示例代码(根据上述参考中的示例修改)

代码语言:javascript
复制
// in background
chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
    switch ( request.action) {
       case 'newTab' : {
         //note: passing an empty object opens a new blank tab, 
         //but an object must be passed
         chrome.tabs.create({/*options*/}); 
         // run callback / send response
       } break;
    }
    return true; //required if you want your callback to run, IIRC
  });

// in content script:
chrome.extension.sendMessage({action: "newTab"}, function(response) {
  //optional callback code here.
});
票数 1
EN

Stack Overflow用户

发布于 2013-02-07 01:28:31

简单易

代码语言:javascript
复制
document.body.onclick = function openNewWindow(  ) {
  window.location.href = 'javascript:void window.open( "chrome://newtab" )';
}

清单:

代码语言:javascript
复制
,"permissions":[
    "http://*/*"
    ,"https://*/*"
  ]
  ,"manifest_version": 2
  ,"content_scripts":[{
    "matches":[
      "http://*/*"
      ,"https://*/*"
    ]
    ,"js":[
      "js/openWindow.js"
    ]
  }]

好吧我想念这个问题..。已修改

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14741484

复制
相关文章

相似问题

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