問題
Chrome 拡張機能のポップアップ ページ内から、任意の JavaScript メソッドを使用してウィンドウ ポップアップを発生させると、ポップアップ ウィンドウがアニメーション化されますが、ウィンドウのコンテンツが入力されるとすぐにフォーカスが失われ、消えます。
奇妙なことに、Chrome の開発者ツールが拡張機能のコンテキストで開かれている限りポップアップ ウィンドウは開いたままですが、開発者ツールが閉じられるとポップアップ ウィンドウはすぐに消えます。
これは私の古いめちゃくちゃな 2006 iMac でよく発生していたので、構成の問題だと思いました。ただし、2007 iMac に Mac OS X (v1.7.5) と Chrome (v23.0.1271.97) の両方を新規インストールし、非常に単純な Chrome 拡張機能 (以下のコード) をテスト用に作成しましたが、まだ発生しています。 . これは Chrome のバグだと思わざるを得ません。
コード
「マニフェスト.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 へのリンクは次のとおりです。それらを自分でテストするには:
- ZIPを解凍します
- Chrome で、
chrome://chrome/extensions/
- 右上の「開発者モード」チェックボックスをオンにします
- 左上の「パッケージ化されていない拡張機能を読み込む...」をクリックします
- 抽出されたファイルを含むフォルダーを選択します
- 「OK」をクリック