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
    }
}

//テスト ケース alert(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 に答える