10

最新のjquery1.9で実行すると、impromptuver4.1でエラーが発生します

Uncaught TypeError:未定義のプロパティ'msie'を読み取ることができません

これは、以前のバージョンのjqueryには当てはまりませんでした。

即席の問題のある行は20行目です。

var ie6 = ($.browser.msie && $.browser.version < 7);
4

7 に答える 7

24

この行を置き換えてImpromptuにパッチを当てることができます:

var ie6 = ($.browser.msie && $.browser.version < 7);

...これで:

var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );

...これで、jQueryv1.9.0+で動作できるようになりました。オプションで、jQueryv1.8.3にロールバックできます。

編集(2013年3月12日)

コメントをありがとう@johntrepreneur、あなたは正しいです。2つのメモ

  1. この編集された行:

    var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
    

    ...これに置き換える必要があります:

    var ie6 = ( navigator.userAgent.match(/msie [6]/i) );
    

    ...私の悪い、私はパッチを急いで書きました。それでうまくいくはずです。

  2. Impromptuは、最後のコミットでIE6サポートを完全に削除しました(この元の投稿の後の2013年3月25日)。OPによってもたらされた問題は、ImpromptuがjQueryv1.9+で壊れたことでした... Impromptujsファイルを最後のバージョンに更新しても問題は修正されます

于 2013-01-24T23:44:42.203 に答える
6

私はこれが範囲をターゲットにすることを好み、<IE9&jQuery1.9+でのみコードを実行します

if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
{
    //code here
}
于 2013-02-01T11:10:56.787 に答える
2

Jqueryが$.browser機能を廃止して以来、私が見つけた最も簡単な方法は、javascriptでグローバルを作成することでした。

var LTE_IE9 = false;

および使用中の条件HTMLIEセレクター

<!--[if lte IE 9]>
<script>LTE_IE9 = true;</script>
<![endif]-->
于 2013-04-05T15:01:03.727 に答える
0

私はそれを使用します。

  var browser = $.browser;
    if ( ! browser ) {
       var ua = navigator.userAgent.toLowerCase();
       var m = /(msie) ([\w.]+)/.exec( ua ) || ! /compatible/.test(ua) && /(mozilla)/.exec( ua ) || [];
       browser = { version: m[2] };
       browser[ m[1] ] = true;
    }
于 2013-10-09T13:59:22.580 に答える
0

Jquery migrateプラグインを追加

//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js

$.browser.msie>jquery1.9.Xから削除

于 2013-11-27T07:33:01.603 に答える
0

ここで述べたように、バージョン1.9以降、 $。browserはjQueryに存在しなくなりました。

したがって、jQuery1.9.1に更新した後にbrowser.msieエラーを確認してください

于 2014-05-12T16:58:16.453 に答える
0

$ .browseは、jQuery V. 1.4以降で非推奨になり、jQueryV.1.9以降で削除されました。

それでも、これらのコード行でこの問題を修正できます(すべてのブラウザー用)

jQuery.browser = {};
jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());

私にとっては問題なく動作します。

于 2014-07-23T12:10:05.463 に答える