잡히지 않은 TypeError : 정의되지 않은 'msie'속성을 읽을 수 없습니다-jQuery 도구


190

Chrome 개발자 콘솔에서 다음 오류가 발생합니다.

Uncaught TypeError: Cannot read property 'msie' of undefined

내 이해는 그것이 .browserjQuery에서 더 이상 사용되지 않기 때문에 최신 버전의 jQuery 도구를 사용하고 있으며 여전히 오류를 발생 js시키는 것입니다. 파일을 확인하면 거기에 있습니다.

오류가 발생하지 않도록 어떻게 해결할 수 있습니까?


1
이 오류는 충분하지 않습니다. 어떤 요소에서 이것을 읽으려고합니까?
Siddharth Gupta

.browser내 코드 에는 전혀 사용하지 않았습니다 . jQuery 도구 파일에서 감지하는 것 같습니다.
Colin747

6
browser객체가 전용이 아닌 되지 1.9, 그건 갔다 . jQuery 도구에서 여전히 사용중인 경우 jQuery 도구가 손상된 것입니다.
Pointy

1
@Alexander는 오류를 없애는 것처럼 보였습니다. 원하는 경우 답변을 제출할 수 있습니다.
Colin747

3
최신 jQuery 도구는 jQuery 1.7에서만 테스트되었습니다. jQuery 1.9는 최신 버전의 jQuery Tools와 호환되지 않습니다. 그렇게 간단합니다. jQuery 도구를 덤프하거나 jQuery를 1.9 미만의 버전으로 다운 그레이드하십시오. 그렇지 않으면, 누군가 jQuery 도구를 업데이트 할 것으로 기대하지 마십시오. 지난 몇 년간 개발자가 없었습니다.
Sparky

답변:


189

$.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

고마워, 이것을 사용하는 jquery 플러그인을 사용하면 실제 수정이 출시 될 때까지 쉬운 단기 해결책이었습니다.
Joe Meyer

감사. 이 수정 된 Query Tools v1.2.7은 JQuery를 최신으로 업그레이드 한 이후입니다.
bsentosa

1
와우, 내가 당신에게 10 플러스를 줄 수 있다면, 나는 지금 할 것입니다.
Iman Hejazi

9
IE11에는 userAgent문자열에 MSIE 토큰이 없으므로이 답변은 더 이상 정확하지 않습니다 .
Dave Methvin

47

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

글쎄, 그것이 온라인으로 호스팅되는 것을 볼 수 있습니다 ... 어쨌든 jquery에 대한 두 가지 버전이 동일한 페이지에서 사용되므로 jquery.noConflict ()로 해결했습니다.
Prerit Mohan

@ 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 도구 버그입니다 . 패치 중 하나를 시도 할 수 있습니다.

편집 -jQuery Tools가 많은 지원을 받고있는 것처럼 보이지 않습니다. 본인이 직접 지원을받을 준비가되지 않은 한 개인적으로 해당 라이브러리에 종속 된 새 프로젝트를 시작하지 않을 것입니다.


1
+1, jQuery 도구는 지난 몇 년 동안 완전한 혼란이었습니다. "많은 지원을 받고 있지 않다"는 것은 매우 정확하고 큰 과소 평가입니다. jQuery 1.3 이후로 단 하나의 사소한 업데이트가 있었으며 지난 몇 년 동안 개발자도 없었습니다.
Sparky

동의, 누구든지 교체 라이브러리에 대한 권장 사항이 있습니까? 스크롤러, 오버레이 및 범위 입력 슬라이더가 있습니까? jQuery mobile은 사전 스타일로 제공되므로 피하십시오. 나는 전에 그것을 스타일링했고 그것은 악몽이다.
inorganik

5
원하는 각 기능에 대해 잘 작성된 최소 라이브러리를 찾는 것으로 옮겼습니다. 예 : 범위 입력 슬라이더 : loopj.com/jquery-simple-slider , 스크롤러 / 슬라이더 : bxslider.com . 이와 같은 개별 라이브러리를 찾는 데 훨씬 더 나은 지원과 전반적인 작은 설치 공간이 있습니다.
jfeust

4

나는 단순히 추가했다

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

더 이상 IE에 신경 쓰지 않기 때문에 jquery 스크립트 후에.


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>
Watchmaker

0

이전 MS IE 버전을 전혀 지원하지 않을 계획이므로 모든 참조를로 대체 browser.msie했습니다 false. 좋은 해결책은 아니지만 나에게 효과적입니다.

실제로 !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 (결합 라이브러리)"를 찾아 업데이트를 클릭하십시오.
  • 발견되면, 그것을 선택하고 업데이트를 클릭하십시오
  • 찾을 수 없으면 왼쪽의 "온라인> nuget.org"탭에서 찾아 설치를 클릭하십시오. 이전 버전의 Jquery UI 버전이 여전히 존재하면 프로젝트에서 삭제할 수 있습니다

0

jQuery를 두 번 정의한 경우이 오류가 발생할 수 있습니다. 예를 들어 Primefaces (이미 jQuery가 포함되어 있음)로 작업 중이고 다른 위치에서 정의한 경우입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.