ホームページ >ウェブフロントエンド >jsチュートリアル >オブジェクトが Window_jquery であるかどうかを判断する実装コード

オブジェクトが Window_jquery であるかどうかを判断する実装コード

WBOY
WBOYオリジナル
2016-05-16 17:57:171090ブラウズ

まず jQuery の $.isWindow 関数を見てみましょう:

コードをコピーしますコードは次のとおりです。

function isWin(obj){
return obj && typeof obj === 'object' && 'setInterval' in obj; 🎜>
関数自体は非常に科学的であり、主に対象オブジェクトに setInterval 属性があるかどうかで判断されます。
ただし、規約がないと信頼できない可能性があるという問題があります。例:




コードをコピー コードは次のとおりです: var o ={xx:'oo'};
o[' setInterval']=true;
console.log(isWin(o) ); // true


setInterval 属性をオブジェクト リテラルに設定すると、詐欺は成功します。
しかし、実際には、配列などの null 以外のオブジェクトは次の方法で偽装できます。 >

コードをコピーします


コードは次のとおりです。 上記のプロパティ属性のチェックと比較して、より適切な方法は、次の toString 関数を使用することです。判定するオブジェクト:




コードをコピー


コードは次のとおりです: 上記の関数は標準ブラウザでうまく動作します。しかし、それらは新たな互換性の問題ももたらします:




コードをコピー


コードは次のとおりです:// サファリ
Object.prototype.toString.call(window)==='[object DOMWindow]'; // true


幸いなことに、主な問題は邪悪な IE にあります。常にパスです。これは IE での超自然的な出来事を思い出させます:




コードをコピー


コードは次のとおりです:これを書くと、最終的な解決策が出てきたと思います:




コードをコピー


コードは次のとおりです:
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。