我正在编写我的第一个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后没有任何反应。可能是什么问题?
答案 0 :(得分:3)
创建新标签页时,默认情况下会以焦点方式打开,这会导致弹出窗口关闭。当弹出窗口关闭时,它的JavaScript上下文被破坏,并且没有可回调的回调。
您有两个选择:
将逻辑移至background / event page,这将在弹出窗口关闭后继续存在。例如,您可以message背景页面为您执行此操作,而不是从弹出窗口中打开选项卡。
Specify您要打开未聚焦的标签:
chrome.tabs.create(
{
url: "http://google.com",
active: false
}, function(tab) {
/* ... */
}
);
但是,这不会导致标签无法对焦 - Chrome不会切换到它(在后台打开)。可能不是你想要的。您可以在完成其他操作后进行切换 - 使用chrome.tabs.update
设置active: true
。
请注意,弹出窗口无法避免焦点丢失,这是设计使然。