我已经看到这个问题几个不同的时间了,我认为有一些范围规则我误解了。
在我的弹出式HTML中,我有一个按钮:
<button id="submit">Click Me</button>
在该页面的下方,我还使用<script>
个文件声明src
s。一个脚本包含:
document.getElementById("submit").onclick=function(){
var response = function(tab){
alert('success ' + tab.id);
};
chrome.tabs.create({url: determineURL()}, response);
};
如果我打开弹出窗口并单击按钮,新选项卡将打开determineURL()
,但警报永远不会执行。但是,如果我检查弹出窗口,在新选项卡打开并加载时有效地保持打开状态,则警报会执行。
答案 0 :(得分:0)
由于弹出页面在回调可以触发之前按时间顺序关闭,因此不会调用回调。考虑这两个断言:
使用chrome.tabs.create
创建新标签会立即关闭所有打开的扩展程序弹出窗口
{/ 1>}回调仅在创建标签后触发
未加载的页面无法运行脚本。
因此,弹出页面中运行的脚本如下所示:
弹出窗口中的脚本会创建一个标签
由于新标签页
弹出窗口中的脚本会生成警报
注意步骤3 不可能(根据我上面的第三个断言),只要步骤2为真。使用检查模式使弹出窗口持久并阻止步骤2发生。