我在iframe中有这个脚本:
var redirectTo = "http://www.stackoverflow.com";
try {
parent.location.href = redirectTo;
}catch(e){
window.open(redirectTo);
}
浏览器不会发现主题中的错误 如果try块失败,我希望浏览器执行catch块 但是,即使错误发生在try块内,浏览器仍然会看到错误。
更新 在正常情况下,我的代码工作正常 它在iframe中的iframe时不起作用,在这些情况下我收到了安全错误 你有什么想法吗?我怎么知道我的iframe是否在其他Iframe中?
由于
答案 0 :(得分:1)
你无法在javascript中捕获这种错误,因为它不是一个javascript错误,它是一个浏览器安全功能。 但您可以通过检查网址和当前位置之间的域名和端口匹配来阻止它。 如果父框架与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