[英]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個選擇:
將邏輯移至后台 / 事件頁面 ,該頁面將在關閉彈出窗口后保留。 例如,您可以從后台頁面發送消息給您,而不必從彈出窗口中打開選項卡。
指定您要不專心地打開選項卡:
chrome.tabs.create( { url: "http://google.com", active: false }, function(tab) { /* ... */ } );
但是,這不僅會導致標簽頁無法聚焦-Chrome不會切換到該標簽頁(在后台打開它)。 可能不是您想要的。 不過,您可以在完成其他操作后進行切換-使用chrome.tabs.update
將active: true
設置為active: true
。
請注意,彈出窗口無法克服焦點丟失,這是設計使然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.