9

我有一个 JS 函数轮询 iframe 中的当前 url,目的是确定 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 回答