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 回答