2017-03-15 9 views
1

でSafariブラウザを検出:Safariブラウザを使用している場合、私はチェックし、このコードスニペットを、見つけジャバスクリプト

var isSafari = /constructor/i.test(window.HTMLElement); 

が、私は本当にここで何が起こっているのか分かりません。誰かが私のことをどのように説明できますか? constructorはRegExpオブジェクトのプロトタイプを作成した関数を返し、iは大文字と小文字を区別しないマッチングを実行することを知っていますが、正確にはHTMLElementとは何ですか?

答えて

3

サファリでは、window.HTMLElementは、HTMLElementConstructorという名前の関数を返します。

だから、これをやらせる:

/constructor/i.test(function HTMLElementConstructor() {}) // return true 

しかし、他のブラウザ(FF、クローム)で、それはHTMLElement

/constructor/i.test(function HTMLElement() {}) // return false 

を返しますが、この観察のためにありがとうございました! Detect Safari browser

+1

これは、もはやiOS 11では当てはまりません。 – aleclarson

関連する問題