[英]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.