4

我目前的解决方案:

function isAccessToWindowRestricted(w) {
  try {
    return !w.location.href;
  } catch (e) {
    return true;
  }
}

有更好的想法吗?有没有没有try-catch的“合法”方式?

4

1 回答 1

3

没有好的方法,因为没有办法测试父框架中的值是否存在而不抛出异常。

我只是尝试了一些事情,包括:

var parentURL = window.parent && window.parent.location && window.parent.location.href;

无论如何,由于相同的来源策略,它会抛出异常。但是,您可以检查一下您是否在 iframe 中

function checkInFrame( arg ){ arg = arg || window; return arg.parent == window; }

但据我所知,您必须使用一个try { ... } catch( ... ) { ... }块(这就是它的用途)。

于 2009-12-20T22:53:05.310 回答