Mac OS X上的Chrome扩展程序:窗口弹出窗口消失

时间:2012-11-21 09:54:00

标签: javascript macos google-chrome google-chrome-extension

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

奇怪的是,只要Chrome的开发者工具在扩展程序的上下文中打开,弹出窗口就会保持打开状态,但如果开发人员工具关闭,弹出窗口将立即消失。

这种情况曾经发生在我2006年的旧版iMac上,所以我认为这是我的配置问题。但是,我刚刚在2007 iMac上完成了Mac OS X(v1.7.5)和Chrome(v23.0.1271.97)的全新安装,并创建了一个非常简单的Chrome扩展程序(下面的代码) )进行测试并且仍然正在发生。我不禁想到这是Chrome的一个错误。

代码

“的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);
}

这是一个link to a ZIP of these files。自己测试一下:

  1. 提取ZIP
  2. 在Chrome中,转到chrome://chrome/extensions/
  3. 选中右上角的“开发者模式”复选框
  4. 点击左上角的“加载未包装的扩展程序...”
  5. 选择包含解压缩文件的文件夹
  6. 点击“确定”

1 个答案:

答案 0 :(得分:3)

据我所知,弹出窗口不会失去焦点,或者它们会立即关闭。 打开用于检查的开发人员工具会覆盖此策略。

使用alertconfirmprompt会导致弹出窗口失去焦点,因此Chrome会将其关闭。