我正在寻找一种跨浏览器的方式来检测父帧是否与我的帧相同,最好不要在JavaScript错误控制台上打印警告。
以下似乎有效,但我想避免在控制台上打印错误(至少Safari和Chrome在访问父框架上的location.href时会这样做.Firefox抛出一个可以捕获的异常):
function parentIsSameOrigin() {
var result = true;
try {
result = window.parent.location.href !== undefined;
} catch (e) {
result = false;
}
return result;
}
答案 0 :(得分:9)
我会做类似的事情:
var sameOrigin;
try
{
sameOrigin = window.parent.location.host == window.location.host;
}
catch (e)
{
sameOrigin = false;
}
return sameOrigin;
答案 1 :(得分:1)
我使用此方法判断iframe是否包含本地内容
但你也可以从iframe传递window.top
function islocal(win){
var H=location.href,
local= H.substring(0, H.indexOf(location.pathname));
try{
win=win.document;
return win && win.URL && win.URL.indexOf(local)== 0;
}
catch(er){
return false
}
}
//测试用例警报(islocal(window.top))
答案 2 :(得分:0)
试试这个:
function parentIsSameOrigin()
{
var result = true;
if (window.parent)
{
result = Boolean
(
// more precise modifications needed here
window.this.location.href.indexOf(window.parent.location.href) == 0
);
}
return result;
}