26

我正在寻找一种跨浏览器的方法来检测父框架是否与我的框架相同,最好不要在 JavaScript 错误控制台上打印警告。

以下似乎可行,但我想避免向控制台打印错误(至少 Safari 和 Chrome 在访问父框架上的 location.href 时会这样做。Firefox 抛出一个可以被捕获的异常):

function parentIsSameOrigin() {
    var result = true;
    try {
        result = window.parent.location.href !== undefined;
    } catch (e) {
        result = false;
    }
    return result;
}
4

3 回答 3

10

我会做类似的事情:

var sameOrigin;
try
{
    sameOrigin = window.parent.location.host == window.location.host;
}
catch (e)
{
    sameOrigin = false;
}
return sameOrigin;
于 2010-04-16T05:43:23.360 回答
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))

于 2010-04-05T05:53:36.500 回答
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;
}
于 2010-04-05T00:33:26.717 回答