Chrome扩展在Mac OS X上:弹出窗口消失

4

问题
在Chrome扩展程序的弹出窗口中,使用任何JavaScript方法引起窗口弹出会导致弹出窗口出现动画效果,但只要窗口内容被填充,它就会立即失去焦点并消失。

奇怪的是,只要Chrome扩展程序的开发工具处于打开状态,弹出窗口就会一直保持打开状态,但如果关闭了开发工具,弹出窗口将立即消失。

 

这种情况曾经发生在我旧的、混乱的2006年iMac上,因此我认为这是我的配置问题。但是,我刚刚在2007年的iMac上进行了全新的Mac OS X(v1.7.5)和Chrome(v23.0.1271.97)的安装,并创建了一个非常简单的Chrome扩展程序(下面是代码)以进行测试,结果仍然如此。我无法不认为这是Chrome的一个bug。

 

代码

"manifest.json"

{
    "name": "Test Popups",
    "version": "0",

    "manifest_version": 2,

    "browser_action": {
        "default_popup": "popup.html"
    }
}

"popup.html"

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>

        <script src="popup.js"></script>
    </head>

    <body>
        <input type="submit" id="btn_Alert" value="Alert" />
        <input type="submit" id="btn_Confirm" value="Confirm" />
        <input type="submit" id="btn_Prompt" value="Prompt" />
    </body>
</html>

"popup.js"

document.onreadystatechange = function(){
    if (document.readyState === "complete"){
        attach_eventListeners();
    }
}

function attach_eventListeners(){
    var btn_Alert = document.getElementById("btn_Alert");
    var btn_Confirm = document.getElementById("btn_Confirm");
    var btn_Prompt = document.getElementById("btn_Prompt");

    btn_Alert.addEventListener("click", function(){
        window.alert("Test");
    }, false);
    btn_Confirm.addEventListener("click", function(){
        window.confirm("Test");
    }, false);
    btn_Prompt.addEventListener("click", function(){
        window.prompt("Test", "");
    }, false);
}

这是一个包含一些文件的ZIP链接下载地址,这些文件与IT技术有关。要测试它们,请按照以下步骤操作:
  1. 解压缩ZIP文件
  2. 打开Chrome浏览器,在地址栏输入chrome://chrome/extensions/
  3. 在右上角勾选“开发者模式”复选框
  4. 点击左上角的“加载已解压的扩展程序”按钮
  5. 选择包含解压文件的文件夹
  6. 点击“确定”
1个回答

3
据我了解,弹出窗口不能失去焦点,否则它们将立即关闭。 然而,开启开发者工具以便检查覆盖操作可以打破这一限制。
使用 alert、confirm、prompt 会导致弹出窗口失去焦点,因此在 Chrome 中被关闭。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接