web-dev-qa-db-ja.com

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

Chromeデベロッパーコンソールで次のようなエラーが表示されます。

Uncaught TypeError: Cannot read property 'msie' of undefined

.browserは現在jQueryで非推奨になっているためですが、私は最新バージョンのjQueryツールを使用していますが、それでもエラーが発生しているので、jsname__ファイルをチェックインしてあります。

エラーにならないようにするにはどうすればよいでしょうか。

179
Colin747

JQuery 1.9以降、$.browserメソッドは削除されました。

jQuery.browser() removed

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

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

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

180
Alexander

あなたは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;
    }
})();

参照先

221
JrBriones

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>

これは確かにうまくいくでしょう。

43

私は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>
25
Atik Khan

これはGitHubのjQuery Toolsのバグです 。あなたはパッチの一つを試すことができます。

edit - jQuery Toolsが多くの支持を得ているようには思えません。自分でサポートを引き継ぐ準備ができていない限り、私は個人的にそのライブラリに依存する新しいプロジェクトを始めることはありません。

6
Pointy

あなたの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>

ソース リンク

3
Bugfixer

私は単に追加しました

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

jqueryスクリプトの後。IEはもう気にしないので。

1
userlond

JQuery 1.10とJQuery UI 1.8を使用しているときにこのエラーが発生しました。最新のJQuery UI 1.11.4にアップデートすることで、このエラーを解決することができました。

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

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

古いMS IEバージョンをまったくサポートするつもりはないので、browser.msieへのすべての参照をfalseに置き換えました。いい解決策ではない、私は知っているが、それは私のために働く。

(実際には、それらは!browser.msieとして表示されていましたが、条件から省略することができます。)

0
Lerin Sonberg

一撃のように使う

このコマンドを使って解く

"TypeErrorが見つかりません:未定義のプロパティ 'msie'を読み取れません"エラー

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

一撃のように使う

$(function (a) {

。 。 。 。あなたの関数では、次のようにmsieプロパティを使うことができます。

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

がんばろう

0
HamidSadeghi

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

0
Carlos UCR