我知道堆棧溢出有關於使用JavaScript檢測瀏覽器的一千個問題。我的問題是如何檢測瀏覽器沒有window.navigator
(其中包括navigator.userAgent
)?如何在不使用window.navigator的情況下可靠地檢測瀏覽器?
首先,爲了澄清,我不需要知道渲染引擎,這不適用於自適應佈局,也不要恐慌:我已經在做功能檢測。如果爲什麼我在問關於檢測瀏覽器是否重要,請評論,我會很樂意在解釋中進行拼接,但這可能會讓問題變得異常漫長。
接下來,讓我說明爲什麼我的問題是不是重複:
Browser detection in Javascript?因爲解答,的他們使用
navigator.userAgent
明確(包括jQuery.browser
其使用的userAgent,並且現在已經消失了),使用navigator.appName
(它在Chrome中給出了「Netscape」...), side-steps rec的問題優先特徵檢測,這與瀏覽器檢測不同(我已經使用特徵檢測,但要知道我可以使用它們的程度,我需要瀏覽器檢測),並且它們不是真正的答案,或者是特定於IE的特徵。 (雖然this non-answer實際上非常明顯,爲什麼我的問題在這裏是相關的:我試圖避免在某些瀏覽器上遇到痛點,會導致選項卡崩潰!)因爲我的問題是要求一個答案(即使是黑客?),而不使用window.navigator
,它不是這個問題的重複。Check if the user is using IE因爲 11的答案,10使用
navigator.userAgent
和他們的1使用的IE伎倆,只能檢測到IE瀏覽器,這是不夠的回答我的問題(儘管它可能是潛在的是一個有用的一小部分解決方案發布在此)?In Javascript, how do I determine if my current browser is Firefox on a computer vs everything else?因爲 11的回答,8使用
navigator.userAgent
,2,推薦特徵檢測(再一次,不是我的問題),而1甚至不是一個答案,真的。How to detect chrome and safari browser (webkit)因爲8的答案,其中6使用
navigator.userAgent
,和圖2是webkit的特異性。不幸的是,WebKit不一定僅限於Safari,我需要了解瀏覽器,而不是渲染引擎。
希望這是清澈的。
我知道還有其他方法可以做到這一點,但我不太清楚每個瀏覽器的細節。在某些瀏覽器中是否存在一致或可靠地暴露於JavaScript的對象或變量,也許?我知道一些實驗性的API是以供應商爲前綴的,但這似乎不是一個用於商業產品的好主意,儘管如果需要的話我願意屈服於此。任何其他可能性?
這是一百萬其他更具體的問題,如http://stackoverflow.com/questions/12625876/how-to-detect-chrome-and-safari-browser-webkit和http:// stackoverflow。如果我的當前瀏覽器是Firefox上的計算機和http://stackoverflow.com/questions/19999388/jquery-檢查,如果用戶正在使用,即和http://stackoverflow.com/questions/2400935/browser-detection-in-javascript – meagar 2014-11-23 00:12:38
@meager所有這些解決方案檢查用戶代理字符串或做功能檢測。這兩個都不是我的問題的選項。 – Matt 2014-11-23 00:13:47
@meager你甚至讀過我的問題嗎?除了用戶代理之外,瀏覽器類型下注可以檢測到什麼?請重新打開問題。 – Matt 2014-11-23 00:15:17