Uncaught TypeError:未定義のプロパティ 'msie'を読み取れません-jQueryツール


189

Chrome開発コンソールで次のエラーが発生します。

Uncaught TypeError: Cannot read property 'msie' of undefined

私の理解では、これはが.browserjQueryで廃止されたためですが、jQueryツールの最新バージョンを使用していて、それでもエラーが発生しjsます。ファイルをチェックインしました。

これを回避してエラーを出さないようにするにはどうすればよいですか?


1
このエラーは不十分です。これをどの要素から読み取ろうとしていますか?
Siddharth Gupta

.browserコードでまったく使用していません。jQueryツールファイルで検出しているようです。
Colin747、2013

6
このbrowserオブジェクトは1.9で廃止されただけでなくなくなりました。jQueryツールがまだそれを使用している場合、jQueryツールは壊れています。
先のとがった

1
エラーを取り除くように見えた@Alexander。必要に応じて、答えを出すことができます。
Colin747、2013

3
最新のjQueryツールは、jQuery 1.7でのみテストされています。jQuery 1.9は、jQueryツールの最新バージョンと互換性がありません。とても簡単です。jQueryツールをダンプするか、jQueryを動作する1.9より前のバージョンにダウングレードします。それ以外の場合は、jQueryツールの更新を誰にも期待しないでください。過去数年間、開発者がいませんでした。
Sparky

回答:


188

この$.browserメソッドはjQuery 1.9から削除されました。

jQuery.browser() removed

このjQuery.browser()メソッドはjQuery 1.3以降廃止され、1.9で削除されました。必要に応じて、jQuery Migrateプラグインの一部として利用できます。Modernizrなどのライブラリで特徴検出を使用することをお勧めします。

jQuery Core 1.9アップグレードガイド

アップグレードガイドに記載されているように、jQuery Migrateプラグインを使用してこの機能を復元し、jQueryツールを機能させることができます。


242

このソリューションはAJで確認できます。非常に簡単です。次のコード行をコピーして貼り付けてください。

jQuery.browser = {};
(function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
})();

参照


4
これは完璧です!しかし、私はこれをソリューションではなくパッチとして使用するべきだと思いますか?
Jobokai 2014年

おかげで、これを使用していたjqueryプラグインを使用しました。これは、実際の修正がロールアウトされるまでの簡単な短期的な解決策でした。
Joe Meyer

ありがとう。JQueryを最新のものにアップグレードしたため、このクエリツールv1.2.7が修正されました。
bsentosa 2014

1
すごい、10プラスあげられたら、今すぐやります。
Iman Hejazi 14年

9
IE11ではuserAgent文字列にMSIEトークンがないため、この答えは正しくありません。
Dave Methvin、2014

45

jsp / jsファイルで次のスクリプトタグを使用します。

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

これは確実に機能します。


インターネットに接続していることを確認してください。オフラインで使用している場合は、jsファイルを最後にダウンロードして、そのファイルを参照してください。
Manisha Srivastava 14

まあ、オンラインでホストされていることがわかります。同じページでjqueryの2つのバージョンが使用されているため、jquery.noConflict()を使って解決しました。
Prerit Mohan 14

@ User5590:いつでも:)
Manisha Srivastava

本番環境では非縮小jqueryを使用しないでください。たとえば、cdnjs.comを確認してください。代わりにHTTPSを使用してください。
Takman

27

私はjsファイルをインクルードした後、以下のコードを使用し、それが現在動作しています。

<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery.browser = {};
    (function () {
        jQuery.browser.msie = false;
        jQuery.browser.version = 0;
        if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
            jQuery.browser.msie = true;
            jQuery.browser.version = RegExp.$1;
        }
    })();
</script>

このリンクリンクは私にエラーを与えますが、あなたが書いたこの小さなコードは私に大いに役立ちました、ありがとう。
サマン

7

これはGitHubのjQueryツールのバグですです。パッチの1つを試すことができます。

編集 — jQueryツールが多くのサポートを得ているように見えません。私自身、サポートを引き継ぐ準備ができていない限り、そのライブラリに依存する新しいプロジェクトを開始することはありませんでした。


1
+ 1、jQueryツールはここ数年、完全に混乱しています。それが「多くの支持を得ている」わけではないということは、非常に正確であり、非常に控えめな表現です。jQuery 1.3以降のマイナーアップデートは1つだけで、過去2年間も開発者はいないと思います。
Sparky、

同意しますが、誰かが代替ライブラリの推奨事項を持っていますか?スクローラー、オーバーレイ、範囲入力スライダーを備えた何か?事前にスタイルが設定されているため、jQuery mobileは避けます。私は以前にそれをスタイリングしました、そしてそれは悪夢です。
inorganik

5
必要な関数ごとに、適切に記述された最小限のライブラリを見つけることに移動しました。つまり、範囲入力スライダー:loopj.com/jquery-simple-slider、スクローラー/スライダー:bxslider.com。私はこれらのような個々のライブラリを見つけるより良いサポートと全体的に小さなフットプリントを見つけます
jfeust

4

私は単に追加しました

jQuery.browser = {
    msie: false,
    version: 0
};

jqueryスクリプトの後、IEはもう気になりません。


3

JSを

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

ソースリンク


jqueryのため現時点では1.7以上、最新のjQuery-UIは次のとおりです。<link rel="stylesheet" href="https://stackoverflow.com//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
時計職人

0

私はすべての古いMS IEのバージョンをサポートする予定がないので、私は単純にすべての参照を交換してきましたbrowser.msiefalse。良い解決策ではないことは知っていますが、それは私にとってはうまくいきます。

(実際に!browser.msieはと表示され、条件から省略できます。)


0

ブローのように使用

$(function (a) {

。。。。。その後、関数でmsieプロパティを使用できます

if (a.browser.msie) 
{
}
else 
{
   $(settings.current).after(Uploadelement);
}

幸運を


0

ブローのように使用

私はこのコマンドを使用して解決します

「Uncaught TypeError:未定義のプロパティ 'msie'を読み取れません」エラー

if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
    return;
}

0

JQuery 1.10およびJQuery UI 1.8を使用しているときにこのエラーが発生しました。このエラーは、最新のJQuery UI 1.11.4に更新することで解決できました。

Visual StudioからJQuery UIを更新する手順:

  • プロジェクトまたはソリューションに移動する
  • 右クリック:「NuGetパッケージの管理」
  • 左側にある「インストール済みパッケージ」タブをクリックします
  • 「JQuery UI(Combined Library)」を探し、[Update]をクリックします
  • 見つかった場合は、それを選択して「更新」をクリックします
  • 見つからない場合は、左側の[オンライン> nuget.org]タブで見つけて、[インストール]をクリックします。古いバージョンのJquery UIバージョンがまだ存在する場合は、プロジェクトから削除できます

0

jQueryを2回定義すると、このエラーが発生する可能性があります。たとえば、Primefaces(すでにjQueryが含まれています)を使用していて、それを別の場所で定義しているとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.