“不再維護此存儲庫不活躍。如果需要$。瀏覽器,請使用jQuery遷移插件,請直接重寫代碼或usenavigator.useragent。
為什麼要刪除$。瀏覽器?>大多數開發人員開始看到錯誤出現時,他們在想“到底是什麼,為什麼$瀏覽器被刪除了?”。好吧,讓我解釋一些可能的原因。因為$ ..兄弟使用navigator.useragent來確定平台,所以它很容易被用戶欺騙或瀏覽器本身虛假陳述。總是最好避免在可能的情況下完全避免使用特定於瀏覽器的代碼。 $ .support屬性可用於檢測特定功能的支持,而不是依賴$ .browser。
> webkit(作為jQuery 1.4)
> safari(已棄用)
jQuery<span>.uaMatch = function( ua ) { </span> ua <span>= ua.toLowerCase(); </span> <span>var match = <span>/<span>(chrome)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(webkit)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(opera)(?:.*version|)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(msie) (<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> ua<span>.indexOf("compatible") < 0 && <span>/<span>(mozilla)(?:.*? rv:(<span>[w.]</span>+)|)</span>/</span>.exec( ua ) || </span> <span>[]; </span> <span>return { </span> <span>browser: match[ 1 ] || "", </span> <span>version: match[ 2 ] || "0" </span> <span>}; </span><span>}; </span> <span>// Don't clobber any existing jQuery.browser in case it's different </span><span>if ( !jQuery.browser ) { </span> matched <span>= jQuery.uaMatch( navigator.userAgent ); </span> browser <span>= {}; </span> <span>if ( matched.browser ) { </span> browser<span>[ matched.browser ] = true; </span> browser<span>.version = matched.version; </span> <span>} </span> <span>// Chrome is Webkit, but Webkit is also Safari. </span> <span>if ( browser.chrome ) { </span> browser<span>.webkit = true; </span> <span>} else if ( browser.webkit ) { </span> browser<span>.safari = true; </span> <span>} </span> jQuery<span>.browser = browser; </span><span>} </span> <span>// Warn if the code tries to get jQuery.browser </span><span>migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" ); </span>
>使用新的$ .support利用功能和錯誤檢測。 jQuery再次完成了所有艱苦的工作,並在瀏覽器上執行測試,並在jQuery.Support對像上存儲結果(默認情況下,每個頁面加載)。然後,我們可以簡單查詢此對像以確定是否可以使用功能。例如,要檢查不透明度支持,只需做到這一點:
>jQuery<span>.uaMatch = function( ua ) { </span> ua <span>= ua.toLowerCase(); </span> <span>var match = <span>/<span>(chrome)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(webkit)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(opera)(?:.*version|)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> <span><span>/<span>(msie) (<span>[w.]</span>+)</span>/</span>.exec( ua ) || </span> ua<span>.indexOf("compatible") < 0 && <span>/<span>(mozilla)(?:.*? rv:(<span>[w.]</span>+)|)</span>/</span>.exec( ua ) || </span> <span>[]; </span> <span>return { </span> <span>browser: match[ 1 ] || "", </span> <span>version: match[ 2 ] || "0" </span> <span>}; </span><span>}; </span> <span>// Don't clobber any existing jQuery.browser in case it's different </span><span>if ( !jQuery.browser ) { </span> matched <span>= jQuery.uaMatch( navigator.userAgent ); </span> browser <span>= {}; </span> <span>if ( matched.browser ) { </span> browser<span>[ matched.browser ] = true; </span> browser<span>.version = matched.version; </span> <span>} </span> <span>// Chrome is Webkit, but Webkit is also Safari. </span> <span>if ( browser.chrome ) { </span> browser<span>.webkit = true; </span> <span>} else if ( browser.webkit ) { </span> browser<span>.safari = true; </span> <span>} </span> jQuery<span>.browser = browser; </span><span>} </span> <span>// Warn if the code tries to get jQuery.browser </span><span>migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" ); </span>
>
<span>if (jQuery.support.opacity) </span><span>{ </span> <span>//opacity you may do... </span><span>} </span>解決方案5 - 預防/信息
>來源:https://raw.github.com/house9/jquery-iframe-auto-height/master/master/release/jquere.iframe-auto-height.plugin.1.9.1.9.1.js 一如既往的評論,建議和改進。
<span>/* </span><span> Internet Explorer sniffer code to add class to body tag for IE version. </span><span> Can be removed if your using something like Modernizr. </span><span> */ </span> <span>var ie = (function () </span> <span>{ </span> <span>var undef, </span> v <span>= 3, </span> div <span>= document.createElement('div'), </span> all <span>= div.getElementsByTagName('i'); </span> <span>while ( </span> div<span>.innerHTML = '', </span> all<span>[0]); </span> <span>//append class to body for use with browser support </span> <span>if (v > 4) </span> <span>{ </span> <span>$('body').addClass('ie' + v); </span> <span>} </span> <span>}()); </span>
經常詢問有關jQuery瀏覽器函數的問題(常見問題解答)
> jQuery瀏覽器函數是什麼,為什麼不棄用? > jQuery瀏覽器函數是jQuery中的功能,它提供了有關用戶瀏覽器的信息。它用於檢測用戶使用的瀏覽器和版本。但是,此功能在JQuery版本1.3中被棄用,並在版本1.9中刪除。其貶值的原因是它鼓勵瀏覽器特定的代碼,這是違反了漸進式增強和優雅退化的原則。取而代之的是,鼓勵開發人員使用功能檢測,這是一種更可靠,更耐心的方法。功能檢測是Web開發中用於確定瀏覽器是否支持某個功能的技術。您沒有檢查瀏覽器和版本,而是檢查是否有特定功能。這是一種更可靠,更適合未來的方法。您可以使用ModernIzr庫進行功能檢測。
> jQuery Migrate插件是幫助您的工具更新您的jQuery代碼以使用較新版本的jQuery。它恢復了貶低的功能和行為,因此較舊的代碼仍然可以與較新版本的jQuery一起使用。如果您不能再將代碼更新為不再依賴jQuery瀏覽器函數,則可以將jQuery遷移插件用作臨時解決方案。
要使用jQuery Migrate插件,您需要將其包含在HTML文件中,包括jQuery。包含插件後,它將自動恢復jQuery瀏覽器函數和其他不棄用的功能。
>>為什麼比瀏覽器檢測更優先?
特徵檢測比瀏覽器更喜歡檢測是因為它是一種更可靠,更適合未來的方法。瀏覽器檢測依賴於用戶代理字符串,可以輕鬆地欺騙或虛假陳述。另一方面,功能檢測檢查是否有特定功能,這是確定用戶瀏覽器功能的更準確的方法。如何更新我的代碼以使用功能檢測而不是jQuery瀏覽器函數? 要更新您的代碼以使用功能檢測,您需要使用特定功能的檢查來替換jQuery瀏覽器函數的任何實例。您可以使用ModernIzr庫來幫助解決此問題。例如,您可以檢查瀏覽器是否支持Internet Explorer獨有的特定功能。
,如果您在jQuery中遇到其他折衷的功能,最好的解決方案是將代碼更新到不再依賴這些功能的代碼。您可以將jQuery遷移插件用作臨時解決方案,但是建議更新代碼以進行長期兼容性。始終檢查jQuery文檔以獲取有關棄用功能及其替代方案的最新信息。
>以上是修復jQuery $的5種方法未找到瀏覽器功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!