问题
在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技术有关。要测试它们,请按照以下步骤操作:
- 解压缩ZIP文件
- 打开Chrome浏览器,在地址栏输入
chrome://chrome/extensions/
- 在右上角勾选“开发者模式”复选框
- 点击左上角的“加载已解压的扩展程序”按钮
- 选择包含解压文件的文件夹
- 点击“确定”