问题
在Chrome扩展的弹出页面中,使用任何JavaScript方法都会导致弹出窗口弹出,但是,一旦填充了窗口的内容,就会立即失去焦点并消失。
奇怪的是,只要Chrome的开发工具在扩展的上下文中打开,弹出窗口就会保持打开,但是如果开发工具关闭,弹出窗口就会立即消失。
这曾经发生在我的旧的,混乱的2006年iMac,所以我认为这是我的配置的一个问题。然而,我刚刚在2007年的iMac上重新安装了Mac (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。亲自测试它们:
chrome://chrome/extensions/
发布于 2014-05-09 09:33:42
据我所知,弹出窗口不能失去焦点,否则就会立即关闭。打开用于检查的开发工具可以重写此策略。
使用alert
、confirm
、prompt
会导致弹出窗口失去焦点,因此被Chrome关闭。
https://stackoverflow.com/questions/13490538
复制相似问题