- PR -

ie7タブがwindow.close、window.openで表示できない!!

1
投稿者投稿内容
shuichi
会議室デビュー日: 2008/02/17
投稿数: 3
投稿日時: 2008-02-17 18:31
WEBシステムのJavaScriptでie6では問題なかったのですが、ie7のタブで表示する設定の場合のみ表示できません。
ie7の別ウィンドウで表示する設定の場合(デフォルト)では表示できますが、ユーザによってはタブで表示する設定に変更されている可能性は十分あります。
以下、再現するie7設定とサンプルを記載していますので、解決方法を教えていただけないでしょうか?

■ie7設定
インターネットオプション>全般タブ>タブの設定ボタン押下>ポップアップの発生時「常に新しいタブでポップアップを開く」を選択
※「常に新しいウィンドウでポップアップを開く」(デフォルト)では再現しません。

■サンプル(以下をtest.htmlなどで保存して開くと再現できます)
<html>
<head>
<script type="text/javascript"><!--
function win() {
var win = null;
win = window.open('about:blank', 'test', '');
win.close();

//下のアラートを出すとOK(ダメな回避方法)
//alert('open_stop!!');

win = window.open('about:blank', 'test', '');
win.focus();
}
// --></script>
</head>
<body>
<a href="javascript:win();">ウィンドウを開く</a>
</body>
</html>

■ダメな回避方法
//alert('open_stop!!')の//を消して開くと、アラートが出た後に正常にウィンドウが表示できます。
なぜこのような動きをするのか本当に不思議ですが、アラートを出さずに解決できないでしょうか?
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-02-17 19:20
Firefoxでは正常ですから、これはIE 7のタブ機能のバグです。
shuichi
会議室デビュー日: 2008/02/17
投稿数: 3
投稿日時: 2008-02-17 22:07
>rancoさん
早速の返信ありがとうございます。
確かに、Firefoxで正常ということはIE7のバグにみえます。
ちなみに、サンプルの目的は、既に画面が開いているかもしれないので、同じ画面を開いて閉じて、再度開くことです。
顧客の環境がIEのみになっており、何とか回避したいと思っていますので、ご意見のある方よろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-02-18 01:56
window の名前を変えてみるとか。
開いて閉じて開くってなんか変な動きだな。。。
コード:
win = window.open('about:blank', 'test1', ''); 
win.close(); 

//下のアラートを出すとOK(ダメな回避方法) 
//alert('open_stop!!'); 

win = window.open('about:blank', 'test2', ''); 


_________________
かるあ のメモスニペット
shuichi
会議室デビュー日: 2008/02/17
投稿数: 3
投稿日時: 2008-02-18 02:23
>かるあさん
返信ありがとうございます。
windowの名前を変えるとウィンドウは表示できましたが、目的から外れてしまいます。。
既に画面が開いている場合に一旦閉じるために、あえて同じwindowの名前にしています。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2008-02-18 09:29
タイミングの問題のようですね
次のようにするととりあえず出来る?

コード:
<html>
<head>
<script type="text/javascript"><!--
function win() {
var win = null;
win = window.open('about:blank', 'test', '');
//win.close();

//下のアラートを出すとOK(ダメな回避方法)
//alert('open_stop!!');

setTimeout(function(){win = window.open('test.html', 'test', '');}, 100);

}
// --></script>
</head>
<body onload="self.focus()">
<a href="javascript:win();">ウィンドウを開く</a>
</body>
</html>


1

スキルアップ/キャリアアップ(JOB@IT)