js---判斷是否是在safari瀏覽器中打開

【常規的寫法】
/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);

【正則前瞻】

也可以利用正則前瞻濃縮成一條語句,
其中^是指:只在開頭進行一次斷言判斷。
(?=.Safari)是指進行斷言的部分包含.Safari字段,
(?!.Chrome)是指斷言判斷部分沒有.Chrome字段。

/^(?=.Safari)(?!.Chrome)/.test(navigator.userAgent);

【navigator.vendor字段】
另外還可以利用navigator.vendor字段來判斷是否是Safari瀏覽器。
navigator.vendor字段是描述瀏覽器提供商的字段。在Safari下爲Apple。
但是這個字段僅僅適合判斷是否是Safari,而且僅適合在PC上判斷。

/Apple/.test(navigator.vendor)
【備註】
PC端只有Chrome有Safari字段嗎?爲什麼不需要判斷其他瀏覽器?
其實360,QQ等瀏覽器的userAgent字段也會帶有Safari字段,但是由於他們基於Chrome二次開發的,所有也會攜帶有Chrome字段。
所以「匹配規則:擁有Safari字段,並且沒有Chrome字段」就可以了。


爲什麼Chrome瀏覽器的userAgent會有Safari字段?
具體請參考Litten大神的文章
看完你還會知道爲什麼瀏覽器的userAgent都帶有Mozilla標示。


爲什麼navigator.vendor字段僅僅適合判斷是否是Safari,用於區分Chrome不行嗎?
因爲PC上基於Chrome進行二次開發的瀏覽器較多,其vendor字段均爲Google,無法唯一判斷是否爲Chrome瀏覽器。
但是PC端幾乎沒有基於Safari開發的瀏覽器,所以可以唯一判斷。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章