簡體   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