WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ウインド表示ファイルに直接リンク時の処理方法

0:[投稿] ふたばマーク [2005/10/09 07:24 ] [環境:IE6,WINxp UNIX]

よろしくお願いします。
現状を説明させていただくと、index.htmlから別ウインドウにファイルAを開くようにしております。そして、ファイルAからデータに基づいてindex.htmlをロケーションさせた後、自身のファイルAをクローズする流れにいていますが、問題は検索サイトからダイレクトにファイルAにアクセスされた場合に、index.htmlのウインドが存在しないため、エラーとなってしまいます。現在オンエラーなら、自身のファイルを「データに基づいてindex.htmlをロケーション」の処理を試みましたが、どうもうまくいきません。
参考になるようなサイトなどアドバイス頂ければ幸いです。
現状はオンエラー時はうまくいくのですが、正規のindex.htmlから別ウインドに開いたファイルAの場合も、自身がオンエラー時の処理と同じようになっています。


1:[回答] ふ [2005/10/09 07:28 ]

追加情報
ファイルAにてクリックする事で、ジャバスクリプト関数により一連の流れをするようにしています。


2:[回答] m035 [2005/10/09 15:22 ][URL]

if(document.referrer.length>0){
location.href="index.html";
}
もしくは
if(!opener){
location.href="index.html";
}
でどうでしょう。
最初の方法はどこからこのページに来たのかURLが格納されるのですが、
window.open時には空文字になるはずなので1文字でもあれば
別ページから来たことになります。
二つ目の方法は
window.open時には親ウィンドウが存在するはずなので
それが存在しない場合は別ページから来たことになります。

最初の方法はうまくいないときがあり、
二つ目の方法は右クリックなどで別ウィンドウを開いて表示にされると使えないので、二つを組み合わせて、
if(!opener||document.referrer.length>0){
location.href="index.html";
}
を使うといいと思います。


3:[完了] ふたばマーク [2005/10/10 15:34 ]

m035さん
早速の回答、有り難うございました。

if(!opener||document.referrer.length>0){
location.href="index.html";
}
上記の関数を組み込み、動作確認致しました。


4:[質問] ふ [2005/10/10 16:36 ]

ブラウザーがieなら正常に動作しますが
ネットスケープの場合if(!opener)の値がどうも違うようです。
ブラウザーによる分岐も考えましたが、良きアドバイスお願いします。


5:[回答] m035 [2005/10/10 20:37 ][URL]

正しい呼び出し時は
window.open("呼び出されるHTMLのURL"+"#");
でindex.htmlから呼び出し、
呼び出されるべきHTMLで
if(location.href.indexOf("#")!=-1){
location.href="index.html";
}
なんてどうでしょうか?
直接リンクだとアンカーの#はURLにつかないと思いますから、判別できるはずです。


6:[回答] m035 [2005/10/10 20:38 ][URL]

if(location.href.indexOf("#")=-1){
location.href="index.html";
}
でした。またミスしてしまった・・・。


7:[回答] ふたばマーク [2005/10/11 08:07 ]

回答有り難うございます。
ウインド内に読み込んだファイルAの中で、1ページと2ページがあり、ページ内リンクをしているため、
if(location.href.indexOf("#")=-1)の条件を満たしてしまいます。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]