0

iframe 内に次のスクリプトがあります。

var redirectTo = "http://www.stackoverflow.com";
try {
      parent.location.href = redirectTo;
}catch(e){
      window.open(redirectTo);
    }

ブラウザは件名のエラーをキャッチしません。
try ブロックが失敗した場合、ブラウザーに catch ブロックを実行させたい。
ただし、try ブロック内でエラーが発生した場合でも、ブラウザーには引き続きエラーが表示されます。

更新 通常の状況では、私のコードは正常に動作します。
iframe 内に iframe がある場合は機能しません。これらの場合、セキュリティ エラーが発生します。
Yさん何か分かりますか?自分の iframe が他の iframe 内にあるかどうかを知るにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

これはjavascriptエラーではなく、ブラウザのセキュリティ機能であるため、javascript内でその種のエラーをキャッチすることはできません。ただし、URLと現在の場所の間でドメインとポートが一致するかどうかを確認することで、これを防ぐことができます。また、iframeのドメイン/ポートが同じでない場合、親フレームにアクセスすることはできません。したがって、親フレームのドメイン/ポートが子iframeと同じでない場合は、他のソースからその場所をすでに知っていない限り、その場所を取得することさえできない可能性があります。本当にしてはいけないことをしようとしている

(更新)親ノードのチェック

var ploc=null
try {
  if (parent && parent.nodeName=="IFRAME")
    ploc=parent.location;//assuming current node is an iframe
}catch(e){
  //it may be an iframe but from another domain
}

if (ploc) ... //ok its an iframe and is from same domain the we can proceed
于 2012-05-20T06:21:33.653 に答える