ページに次のスクリプトがあります。たとえば、「child.html」としましょう。
opener.opener = opener; opener.close()
参照URLがスクリプトのステートメント(parent.html)にリストされている場合にのみブラウザーに関数を表示さif
せたいのですが、そうでない場合はブラウザーに表示させたくありません。
このスクリプトが存在するページは、親ページの子ページ(ポップアップ)です。ユーザーは(うまくいけば)親ページにのみアクセスし、その後、この子ページを開き、同時にopener.opener = opener; opener.close()
関数を使用して親ページを閉じます。
この関数は正常に機能し、必要な処理を実行します(ポップアップを開いた後に親を閉じます)。しかし、子ページのURLに直接アクセスした場合(つまり、親ページからの指示なしに)、明らかに閉じる親ページがなく、スクリプトエラーが発生します。
「オープナー」がnullであるか、オブジェクトではありません
エラーメッセージを理解しているので、参照URLがparent.htmlでない場合に「オープナー」を非表示にしようとしているので、誰かが子ページに直接アクセスした場合、オープナーは非表示になり、エラーメッセージは表示されません。
これを機能させるには、以下のスクリプトで何を変更する必要がありますか?
<script type="text/javascript">
//<![CDATA[<!--
if (document.referrer != '../parent.html') {
opener.opener = opener;
opener.close();}
else {}
//-->
//]]>
</script>
または、次のように書いてみました。
<script type="text/javascript">
//<![CDATA[<!--
if (document.referrer = '../parent.html') {
return false;
} else {
opener.opener = opener;
opener.close();}
//-->
//]]>
</script>
しかし、それはスクリプトエラーを返します:関数の外の'return'ステートメント。
あなたが提供できるどんな助けにも前もって感謝します!