9

タイトルはほとんどそれをすべて言います。オブジェクトが DOM:Window インターフェイスのインスタンスであるかどうかを確認する必要があります。iframe が存在する場合はwindow、テストにも合格します。window.frames[xyz]

最も直感的な方法は、 を介した単純な instanceof check のようobject instanceof window.constructorです。に等しいブラウザー(IE6 など)があるのは悲しい状況です。window.constructorundefined

何を提案しますか?のようなハッキーで醜いtoString依存的な方法は常にありますが/\[object.*window.*\]/i.test(object)、可能であれば、単純でクリーンなソリューションを使用したいと思います。

4

1 に答える 1

6

オブジェクトには、常に同じオブジェクトを指すwindow異常なプロパティがあります。他のオブジェクトがこの動作を複製する可能性は非常に低いため、テストのフォールバックとして使用できます。windowwindowwindow.constructor

function isWindow(obj) {
    if (typeof(window.constructor) !== 'undefined') {
        return obj instanceof window.constructor;
    } else {
        return obj.window === obj;
    }
}

この動作を示すjsFiddle

于 2011-06-03T15:59:40.503 に答える