首頁 > web前端 > js教程 > 修復jQuery $的5種方法未找到瀏覽器功能

修復jQuery $的5種方法未找到瀏覽器功能

Lisa Kudrow
發布: 2025-02-24 09:10:12
原創
415 人瀏覽過

5 Ways to Fix jQuery $.browser function missing not found

修復jQuery $的5種方法未找到瀏覽器功能

鑰匙要點

  • jQuery $。瀏覽器功能由於其易受欺騙和虛假陳述而被貶低。鼓勵開發人員避免特定於瀏覽器的代碼,而是使用功能檢測來獲得更可靠的結果。
  • >缺少jQuery $的五個可能的解決方案。 Browser函數包括使用jQuery Migrate插件遷移jQuery,使用Modernizr進行功能檢測,使用新的$ .support用於功能和錯誤檢測,使用Javascript/Manual檢測或告知用戶關於不支持的函數。
  • > jQuery遷移插件可以用作恢復較新版本的jQuery的折舊功能和行為的臨時解決方案。但是,建議將代碼更新為不再依賴於棄用的功能以進行長期兼容性。
  • >
  • 好的,現在正式宣布$ .BROWSER功能已被貶低。我們該怎麼辦?不要驚慌,我在下面有5種可能的解決方案供您執行作為您的酌處權。回購中的此github消息確實說明了一切:
>

“不再維護此存儲庫不活躍。如果需要$。瀏覽器,請使用jQuery遷移插件,請直接重寫代碼或usenavigator.useragent。

為什麼要刪除$。瀏覽器?
>大多數開發人員開始看到錯誤出現時,他們在想“到底是什麼,為什麼$瀏覽器被刪除了?”。好吧,讓我解釋一些可能的原因。因為$ ..兄弟使用navigator.useragent來確定平台,所以它很容易被用戶欺騙或瀏覽器本身虛假陳述。總是最好避免在可能的情況下完全避免使用特定於瀏覽器的代碼。 $ .support屬性可用於檢測特定功能的支持,而不是依賴$ .browser。

可用標誌為:

> webkit(作為jQuery 1.4)

> safari(已棄用)
  • > Opera
  • > msie(請注意,IE8在兼容性視圖中聲稱為7)
  • >
  • > mozilla
  • >解決方案1 ​​ - 遷移jQuery
  • >使用jQuery遷移插件將jQuery的早期版本升級到jQuery 1.9.x。這是所有榮耀中遷移$ .BROWSER代碼:
>

>解決方案2 - 使用Modernizr

使用ModernIzr利用特徵檢測,HTML5/CSS3等…而不是基本的瀏覽器檢測。我認為Modernizr很棒!
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>
登入後複製
登入後複製

>解決方案3 - 使用jquery.support

>使用新的$ .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>
登入後複製
登入後複製

>解決方案4 - 使用JavaScript/手動檢測

使用以下JavaScript代碼段來檢測瀏覽器和版本。 QuirksMode具有相當廣泛的JavaScript瀏覽器/設備檢測對象,可能被證明有用。

>

<span>if (jQuery.support.opacity)
</span><span>{
</span>   <span>//opacity you may do...
</span><span>}
</span>
登入後複製
解決方案5 - 預防/信息

只需通知用戶,他們使用的jQuery版本不支持$ .BROWSER函數。可能不會推薦此解決方案,因為它無助於可用性,但可以用來阻止某些插件。我建議使用遷移插件的開發人員版本,該插件打開內容豐富的調試。

>來源: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中刪除。其貶值的原因是它鼓勵瀏覽器特定的代碼,這是違反了漸進式增強和優雅退化的原則。取而代之的是,鼓勵開發人員使用功能檢測,這是一種更可靠,更耐心的方法。

> jQuery瀏覽器函數的棄用有什麼影響? jQuery瀏覽器函數意味著它不再在較新版本的jQuery中支持。如果您使用的是1.9或更高版本的jQuery版本,則任何依賴jQuery瀏覽器函數的代碼都無法正常工作。如果您依賴此功能,這可能會破壞您的網站或應用程序。

>

>如果遇到與jQuery瀏覽器函數相關的錯誤,我該如何修復jQuery瀏覽器函數錯誤?最好的解決方案是將代碼更新到不再依賴此功能。而是使用功能檢測來確定用戶瀏覽器具有哪些功能。如果您無法更新代碼,則可以使用jQuery Migrate插件,該插件還原jQuery瀏覽器函數。

什麼是功能檢測,我該如何使用它代替jQuery瀏覽器函數?

功能檢測是Web開發中用於確定瀏覽器是否支持某個功能的技術。您沒有檢查瀏覽器和版本,而是檢查是否有特定功能。這是一種更可靠,更適合未來的方法。您可以使用ModernIzr庫進行功能檢測。

>什麼是jQuery Migrate插件,它如何幫助解決jQuery瀏覽器函數錯誤?

>

> jQuery Migrate插件是幫助您的工具更新您的jQuery代碼以使用較新版本的jQuery。它恢復了貶低的功能和行為,因此較舊的代碼仍然可以與較新版本的jQuery一起使用。如果您不能再將代碼更新為不再依賴jQuery瀏覽器函數,則可以將jQuery遷移插件用作臨時解決方案。

如何使用jQuery遷移插件來修復jQuery瀏覽器函數錯誤?

>

要使用jQuery Migrate插件,您需要將其包含在HTML文件中,包括jQuery。包含插件後,它將自動恢復jQuery瀏覽器函數和其他不棄用的功能。

>

是否有jQuery瀏覽器函數的替代方法? jQuery瀏覽器功能。最受歡迎的替代方案之一是功能檢測,這是一種更可靠,更適合未來的方法。您可以使用ModernIzr庫進行功能檢測。另一種選擇是使用navigator.useragent屬性,儘管不建議這樣做,因為它可以很容易被欺騙。

>為什麼比瀏覽器檢測更優先?

特徵檢測比瀏覽器更喜歡檢測是因為它是一種更可靠,更適合未來的方法。瀏覽器檢測依賴於用戶代理字符串,可以輕鬆地欺騙或虛假陳述。另一方面,功能檢測檢查是否有特定功能,這是確定用戶瀏覽器功能的更準確的方法。

如何更新我的代碼以使用功能檢測而不是jQuery瀏覽器函數? 要更新您的代碼以使用功能檢測,您需要使用特定功能的檢查來替換jQuery瀏覽器函數的任何實例。您可以使用ModernIzr庫來幫助解決此問題。例如,您可以檢查瀏覽器是否支持Internet Explorer獨有的特定功能。

>如果我在jQuery中遇到其他不棄用的功能,該怎麼辦?

,如果您在jQuery中遇到其他折衷的功能,最好的解決方案是將代碼更新到不再依賴這些功能的代碼。您可以將jQuery遷移插件用作臨時解決方案,但是建議更新代碼以進行長期兼容性。始終檢查jQuery文檔以獲取有關棄用功能及其替代方案的最新信息。

>

以上是修復jQuery $的5種方法未找到瀏覽器功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板