DOBON.NET DOBON.NETプログラミング掲示板過去ログ

親ページを閉じた時に子ページ(PDF)を閉じる

環境/言語:[VB.NET4.0]
分類:[ASP.NET]

親ページを閉じた時に子ページ(PDF)を閉じる制御を加えようとしておりますが、
子ページ(PDF)を閉じることができなく困っております。

下記ソースの抜粋↓↓↓

//変数宣言
var childWindowCount = 0;
var childWindows = new Array();



○子画面を開く
childWindowCount++;
mywin = window.open("/ファイル.pdf", childWindowCount);
childWindows[childWindowCount - 1] = mywin;

○親画面を閉じる
//子画面を全て閉じる
for (var i = 0; i < childWindowCount; i++) {
var closeWindow = childWindows[i];
if (!closeWindow.closed) {
(closeWindow.open('', '_self').opener = closeWindow).close();
}
}
//親画面を閉じる
(window.open('', '_self').opener = window).close();


※上記を行った時に、closeWindow.closedの結果がTrueとなってしまい、
PDFを表示しているページは既に閉じられたと判断されてしまいます。

上記を回避するには、PDFを表示する専用のページを用意し、FrameにPDFファイルを表示し、
Acrobatの表示設定を「ブラウザ内に表示」にしておけばとりあえずは回避できそうな気がします。

ですが、Acrobat(クライアントのアプリ)の表示設定が絡みますので、上記の回避策の対応は避けたいです。

closeWindow.closedの結果をFalseで取得する方法はございますでしょうか?

ご回答お待ちしております。よろしくお願いいたします。
■No29337に返信(PGさんの記事)
現象が確認されたブラウザはIEでしょうか。IE9でPDFファイルを開いたときに同じ
現象が起きることを確認しました。

window.open("/ファイル.pdf", childWindowCount);
mywin = window.open("/ファイル.pdf", childWindowCount);
childWindows[childWindowCount - 1] = mywin;

上記のようにPDFファイルを同じウィンドウ名で2回開くとclosedプロパティがfalse
になりました。異なるPDFファイルでもclosedプロパティはfalseになりました。
ユーザーが要求するPDFファイルとは別にclosedプロパティをfalseにするための軽量
なPDFファイルを用意するという手段が考えられます。しかし、PDFファイルが
ブラウザ内に表示されないようAcrobatで設定されているばあい、PDFファイルの
ダウンロードダイアログが2回表示されます。利用する人はすこし不自然に感じる
だろうとそのように思いました。

closedプロパティを参照したあとにcloseメソッドを呼ぶという処理の流れにこだわ
らなくてもよろしければ、以下の方法で子ページを閉じることができました。

var childWindowCount = 0;
var childWindows = new Array();

//○子画面を開く
childWindowCount++;
mywin = window.open("/ファイル.pdf", childWindowCount);
childWindows[childWindowCount - 1] = childWindowCount;

//○親画面を閉じる
//子画面を全て閉じる
for (var i = 0; i < childWindowCount; i++) {
    var closeWindow = window.open("", childWindows[i]);
    closeWindow.close();
}

//親画面を閉じる
(window.open('', '_self').opener = window).close();

DOBON.NET | プログラミング道 | プログラミング掲示板