繁体   English   中英

不会在弹出窗口中触发chrome.tabs.create的回调吗?

[英]Callback of chrome.tabs.create is not triggered in a popup?

我正在编写第一个chrome扩展程序,该扩展程序应在新标签页中打开一个URL,然后执行某些操作。

表现:

{
  "manifest_version": 2,

  "name": "Test",
  "description": "",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "tabs",
    "activeTab"
  ]
}

的script.js:

function toggle() {
        chrome.tabs.create({ url: "http://google.com" }, function(tab) {
        alert("Hello!");
        });
 }

document.getElementById('toggle').addEventListener('click', toggle);

popup.html:

<html>
  <head>
  </head>
  <body>
    <div id="toggle" class="clickable">START</div>
    <script type="text/javascript" src="script.js"></script>
  </body>
</html>

问题是打开URL后没有任何反应。 可能是什么问题?

创建新选项卡时,默认情况下它将以焦点形式打开,这将导致弹出窗口关闭。 弹出窗口关闭时,其JavaScript上下文被破坏,没有回调可调用。

您有2个选择:

  1. 将逻辑移至后台 / 事件页面 ,该页面将在关闭弹出窗口后保留。 例如,您可以从后台页面发送消息给您,而不必从弹出窗口中打开选项卡。

  2. 指定您要不专心地打开选项卡:

     chrome.tabs.create( { url: "http://google.com", active: false }, function(tab) { /* ... */ } ); 

    但是,这不仅会导致标签页无法聚焦-Chrome不会切换到该标签页(在后台打开它)。 可能不是您想要的。 不过,您可以在完成其他操作后进行切换-使用chrome.tabs.updateactive: true设置为active: true

请注意,弹出窗口无法克服焦点丢失,这是设计使然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM