9

iframe の現在の URL をポーリングする JS 関数があります。その目的は、iframe がメイン ドキュメントと同じサイトを指しているかどうかを確認することです。そのため、コードは基本的に次のとおりです。

function urlCheck()
{
  var location = document.getElementById('frameid').contentWindow.location.href;
  if (location)
  {
    // iframe src is currently local
  }
  else
  {
    // iframe src is currently not local
  }
}

機能的には、このコードは完全に機能します。ただし、エラーコンソールでは、この関数が呼び出され、iframe src がローカルではないたびにエラーが発生します。

[site1] が [site 2] からプロパティ Location.href を取得する権限が拒否されました

これらのエラーを回避するためにコードを修正するにはどうすればよいですか?

ありがとう、マラ

4

2 に答える 2

12

コードをtry-catchブロックでラップすると、これらのエラーをキャッチして処理できるはずです。

于 2009-08-18T07:09:25.823 に答える
0

実際には、エラー メッセージが必要な情報です。iframe の URL が別のドメインを指すとすぐに、アクセス許可エラーが発生します。これは、 XSS 攻撃を回避するための安全対策です。

[編集] これは、上記のコードを次のように置き換えることができることを意味します。

function urlCheck()
{
  try
  {
    document.getElementById('frameid').contentWindow.location.href;

    // iframe src is currently local
  }
  catch (e)
  {
    // iframe src is currently not local
  }
}
于 2009-08-18T07:19:36.737 に答える