※以下は旧ネタ帳の記事を再掲したものです。
検証して頂いた方、特にtakashiさん、ありがとうございます!ヽ(´▽`)ノ
今現在のFirefoxでは、takashiさん謹製のスクリプトでも無効になってしまいました。残念……。セキュリティポリシー上仕方ないようです。
追記090828:「close.html」が長い事消えてました(;´Д`) 参照できる状態に戻しました。
−−−−−−−−−−−−−−−−−−−−
041217の備忘録にて、Firefoxで window.close() が利かなくなる事例を紹介しましたが、そのコメント「ちゃんと閉じてくれた」というのがずーっと気になってたので、少し違う事を試してみました。
多分Mozilla本家でとうに挙げられていると思うのですが、英文が分からないので調べてません(ぇー
● _blankで開く場合
ということで、[こちら]をクリックして開いたページの「ウィンドウを閉じる」をクリックしてみてください。多分閉じます。
ちなみに、設定上タブで開くようになっていると閉じるのですが、自らタブで開くと閉じないようです。扱いが違う模様
●イチから開いてみる
下のURLをコピーし、新しいウィンドウを開いてアドレス欄にペーストしアクセス、表示されたページの「ウィンドウを閉じる」をクリックしてみてください。多分閉じません。
https://www.textbox.jp/close.html
ちうことで、Firefoxで window.close() を機能させるためには、閉じたいウィンドウを、あらかじめ別のページから[_blank]で開くかJavaScriptでポップアップを出すのが良いということらしい。
前回の例できちんと閉じた方は、どこかのリンクから別ウィンドウで開いたのだろうと勝手に推測してみます。
−−−−−−−−−−−−−−−−−−−−
※以下は当時のコメント。
windows.close
お初におめにかかります。takazooと申します。
googleでfirefoxとwindow.closeで飛んできました。
window.closeについてですが。
呼び出し元のソースで
window.open(address);
として開いて、開いた先のjavascriptでWindow.closeを行うとfirefox自体が確実に落ちますね。
[ takazoo ] 2005/03/15 (Tue) 11:19:14
うーん……
Mac版Firefox1.0とWin版0.8・1.0.1で確認して、特に問題はありませんでした。
使用環境や落ちてしまうHTMLソースは分かりますか?
[ くらこむ ] 2005/03/15 (Tue) 17:46:48
window.close
お返事ありがとうございます。
どうやらinit時にwindow.closeを行うと落ちるようです。
なぜ開いたwindowでinitする必要があるかといいますと、
現在ファイルアップロードのフォームをwindow.openで開いた先でおこなっているのですが、
そこでファイルアップロードが完了した場合(ページ更新時)に
自分のページが再度読まれた時にinitでwindow.closeしています。
IEではおちるような事はないのですが、firefoxは1.0のRCの時からずっと残っているバグ(?)のようです。
[ takazoo ] 2005/03/16 (Wed) 07:01:21
失礼しました。
init時というよりは、bodyのonLoad時ですね。
[ takazoo ] 2005/03/16 (Wed) 07:02:21
サンプル作ってみました。
閉じるまでの時間を設けると上手く行くかもしれません。
下記アドレスからサンプルを呼び出してみてください。
http://neta.tbx.jp/close_sample0.html
[ページ2]に setTimeout(“window.close()”,3000); を入れて、3秒後に閉じるようにしています。
Safariでは閉じてくれないので、別途[閉じる]ボタンを加える必要があります。
[ くらこむ ] 2005/03/16 (Wed) 17:39:48
動作できました
くらこむさん
ご教授いただいた通りsetTimeoutでいけました。
このバグさえなければ、、、、とずっと思っていたのが解決できました。
わざわざサンプルのページまで作成して頂きまして本当にありがとうございました。
[ takazoo ] 2005/03/18 (Fri) 04:40:38
どもども
このへんの挙動はブラウザのポリシーの違いかもしれません。
onLoadと同時にwindow.closeが許可されるのは忌避すべき挙動です。
[ くらこむ ] 2005/03/18 (Fri) 06:07:23
closeできました。
はじめまして、takashiと申します。
Netscapeでclose()ができないのをgoogleで検索してたらたどり着きました。
いろいろ調べて試行錯誤した結果、解決策がわかりましたので、ご参考になればと思い書き込ませていただきました。
以下のようにすれば、IEでは警告ダイアログ無し、Netscape/Firefoxでもclose()できました。
= 0){
if(nvua.indexOf(‘MSIE 5.0’) == -1) {
top.opener = ”;
}
}
else if(nvua.indexOf(‘Gecko’) >= 0){
top.name = ‘CLOSE_WINDOW’;
wid = window.open(”,’CLOSE_WINDOW’);
}
top.close();
}
//–>
closeサンプル
ウィンドウを閉じる
以上です。
[ takashi ] 2005/08/23 (Tue) 12:46:56
ごめんなさい。
すいません、HTMLソースそのまま貼り付けたらわけ分からなくなりました;;
肝のところだけもう一回・・・。
function close_win(){
var nvua = navigator.userAgent;
if(nvua.indexOf('MSIE') >= 0){
if(nvua.indexOf('MSIE 5.0') == -1) {
top.opener = '';
}
}
else if(nvua.indexOf('Gecko') >= 0){
top.name = 'CLOSE_WINDOW';
wid = window.open('','CLOSE_WINDOW');
}
top.close();
}
[ takashi ] 2005/08/23 (Tue) 12:49:38
お初です。
Google検索から飛んできました。
Firefox 1.5にしてからwindow.close()が落ちるようになりました。
どうも相性の悪い拡張機能があるようです。
[ kazu ] 2006/01/01 (Sun) 08:38:42
解決しました
takashiさま
すごく困っていたのですがコードをコピって使ったら解決しました。
感謝です!!!!!!
[ ali ] 2006/04/07 (Fri) 20:15:45