Internet Explorer 8의 jQuery 문제


78

IE8에서 작동하도록 jQuery 함수를 얻으려고합니다. Google 서버 ( http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js ) 에서 라이브러리를로드하고 있습니다 .

$(function(){})호출되지 않습니다. 대신 오류가 발생 Object expected합니다. 개발자를 열고 typeof $콘솔에서 실행했는데 undefined.

jQuery (jquery.com)를 사용하는 다른 사이트로 이동하려고했는데 모두 작동합니다. 여기에 누락 된 것이 있습니까?


7
페이지를 보지 않고서는 진단하기가 거의 불가능합니다. 코드가 실행되기 전에 jQuery 라이브러리가로드되고 실행되고 있는지 알 수 있습니까?
ijw

jQuery가 실제로로드되는 문제인 것 같습니다. jQuery 파일 내에 3 개의 중단 점을 설정했는데 해당 줄과 관련된 실행 코드가 없기 때문에 모두 유효하지 않은 것으로 나타났습니다.

IE8에서 모드를 변경하여 IE7 모드 또는 IE8 Compat 모드가 작동하는지 확인하십시오. 개발자 도구를 통해 그렇게 할 수 있습니다.
Jab

스크립트에서 jQuery를로드하고 (헤더에 스크립트 태그를 추가하여) 동일한 스크립트에서 호출 할 때 비슷한 문제가 발생했습니다. jQuery가 제 시간에로드되지 않는 일종의 타이밍 문제처럼 보였습니다. HTML 코드에 정적 스크립트 태그를 넣어 해결했습니다.
Tgr

Microsoft의 CDN에서 jQuery를로드하는 것과 동일한 문제가 있습니다. 내 솔루션은 Chrome에서 작동하지만 IE8에서는 작동하지 않습니다.
Marek Grzenkowicz

답변:


42

변수를 정의 할 때 변수 앞에 "var"를 작성하십시오. IE8은 "var"가 없으면 죽습니다.


"var"선언이 없으면 IE7 및 IE9에서 작동합니다. 이해하기 어렵습니다. MS가 어떻게 그러한 버그를 놓칠 수 있습니까?
네오

답변 주셔서 감사합니다 ... 오늘 내 머리를 구해
주셨습니다.

3
죄송하지만 사실이 아닙니다. var로컬 범위로 변수를 정의하는 데 사용 합니다. 를 사용하지 않고 변수를 정의 var하면 실제로 전역 범위가있는 속성, 즉 창 개체의 속성이 생성됩니다. 자세한 내용은이 질문을 참조하십시오 stackoverflow.com/questions/1470488/...
제임스 매코맥

당신은 내 하루를 구했습니다. 감사합니다! 이것은 실제로 IE10의 문제를 해결했습니다. 이제 내 jQuery 모바일 웹 사이트가 모든 주요 브라우저에서 매력처럼 작동합니다. :)
casaout

39

보정:

스크립트 포함 태그를 확인하십시오.

type="application/javascript" src="/path/to/jquery" 

로 변경

type="text/javascript" src="/path/to/jquery" 

이것은 나에게도 수정 사항입니다
Blake Niemyjski 2015-06-01

38

비슷한 문제가 발생했습니다. IE7 호환 모드에서 실행되는 IE6, Firefox 및 IE8에서 작동했습니다. 그러나 '정상'IE8에서는 아닙니다. 내 해결책은이 코드를 헤더에 넣는 것이 었습니다.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

jquery가 IE8에서 작동하지 않는 이유는 확실하지 않습니다.


19
끔찍 하군! 문제를 해결하지 못합니다. 주변을 해킹 할 뿐이며 다른 문제가 많이 발생할 수 있습니다. (IE7 호환 모드는 실제로 IE7과 완전히 동일하지는 않습니다. 일반적인 IE7이나 IE8에는 나타나지 않는 버그, 기이함 및 결함이 있습니다.)
Spudley

33
더 나은 솔루션이 있으면 공유하십시오. IE에서 작업을 수행하는 많은 접근 방식은 해킹입니다.
JeffryHouser

8
해킹이라면 Microsoft에서 권장하는 것입니다. msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx
eric.christensen 2010

11
누군가가 이것을 거절했기 때문에; 이유를 알려주고 선호하는 접근 방식을 강조하십시오.
JeffryHouser 2010

7
이 문제가 있었고 위의 Richard의 솔루션으로 해결했습니다. google cdn에 대한 jquery 참조를 포함하여 모든 <script type = "application / javascript"...를 <script type = "text / javascript"로 변경했고 IE8이 작동하기 시작했습니다. 이를 위해 전체 페이지를 호환성 모드로 전환 할 필요가 없었습니다.
Vineel Shah

12

해결책은 최신 버전의 jQuery로 업그레이드하는 것입니다. 나는 똑같은 문제가 있었고 1.4.2로 업그레이드했으며 IE8에서 모두 잘 작동합니다.

내가 한 모든 jQuery 1.3.2 항목과 완전히 역 호환되는 것 같으므로 여기에 불만이 없습니다!


3
나는 그것이 무엇을 의미하든 1.8 에서이 문제가 있습니다.
Josh

10

나는이 문제가 있었고 여기에 언급 된 해결책을 성공하지 못했습니다.

결국, 스크립트를 http URL포함하는 페이지가 .txt 파일 인 동안을 사용하여 스크립트의 Google CDN 버전에 연결하고 있음을 깨달았습니다 https page.

이로 인해 IE 는 jquery를로드하지 않았습니다 (사용자에게 보안 콘텐츠 만로드할지 묻는 메시지가 표시됨). https 체계를 사용하도록 Google CDN URL을 변경하면 문제가 해결되었습니다.


내가 그것을 이전 게시물 알고 있지만, 한 번 봐 가지고 할 수 있습니다 -이 방법에 대한 섹션이 지금 구글 (이 문제를 제거한다)의 CDN 사용하는 것이 좋습니다있다
STEF

8

이 게시물에 걸려 넘어지는 일부 사람들은> = jQuery v2를 사용하고 있기 때문에 jquery 및 IE8에서이 문제가 발생할 수 있습니다. 이 코드를 사용하십시오.

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->


6

jQuery가로드되지 않으며 IE8에만 국한되지 않습니다. jQuery 포함 경로를 확인하십시오. 성명서. 또는 더 좋은 방법은 CDN에 다음을 사용하는 것입니다.

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>

3
모든 것이 firefox, safari 및 chrome에서 작동합니다. 라이브러리가 실행되고 있지 않고 다운로드되고 있음을 알 수 있습니다. jquery 파일의 줄에 중단 점을 설정했는데 해당 줄과 관련된 실행 코드가 없다는 메시지가 나타납니다.

5

내가 만든 템플릿 고정 된 사람 doctype이 포함 깜빡 다른 사람을.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

선언하지 않으면 doctype IE8 이 Quirks 모드에서 이상한 일을합니다.


위의 모든 제안을 시도했습니다 ... doctype을 변경했습니다 (HTML5의 "<! DOCTYPE html>"에서 마침내 작동하게되었습니다. (개발 도구에서는 요소의 클래스가 실제로 변경되었음을 보여 주지만 제 생각에는 IE8의 렌더링 엔진이 t는) 인식되지 않은 doctype에 대한 DOM 변경시 새로 고침.
스티븐 M. 해리스에게

4

Object expectedJquery가로드되지 않았기 때문에 오류 가 발생합니다. 이는 외부 자바 스크립트 소스 코드를 실행할 수없는 브라우저 보안 (일반적으로 IE) 때문에 발생합니다. 다음과 같은 방법으로이 문제를 해결할 수 있습니다.

  • 1 : 외부 자바 스크립트 코드 실행을 허용하도록 브라우저 보안 수준 변경. 여기에서 방법을 찾을 수 있습니다.

또는

  • 2 : jquery 소스 코드를 웹 페이지에 복사하여 붙여 넣어 외부 스크립트로 간주되지 않도록합니다.

나는 첫 번째 해결책을 선호합니다.


4

onload 이벤트는 IE7 / 8 에서 항상 작동하지 않습니다 .<head> ... </head>

아래와 같이 태그 앞에 페이지 끝에 onload 스크립트를 추가하여 강제 할 수 있습니다.

  <script>
    window.onload();
  </script>
</body>

2

두 개의 스크립트를 삽입 할 수도 있습니다.

<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">/script> 

2

이것은 IE8에서 내 문제를 해결했습니다.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

localhost에서 실행하면서 https : // http : // .

보안 링크로 이동하려고하면 Internet Explorer에서 웹 페이지를 표시 할 수 없습니다. 친화적 인 경고를 .

문제가 있으면 항상 브라우저에서 텍스트 스크립트를 먼저로드하십시오!


2

나는 같은 문제가 있었다.

IE8이 SRC URL에 도달하도록 올바르게 구성되지 않았 음을 확인하여 해결했습니다.

나는 이것을 바꿨다. 그것은 제대로 작동한다.



1

나는 같은 문제가 있었다. 해결책은 IE에서 신뢰할 수있는 사이트로 JQuery 파일에 대한 링크를 추가하는 것이 었습니다.


1

나는 당신이 나와 같은 문제가 있다고 생각합니다.

Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js

교차 도메인 참조 때문입니다. 동일한 도메인에서 jquery.js를 호스팅하십시오.


0

요컨대 IE8 구문 분석 엔진 때문입니다.

Microsoft가 새 HTML5 태그 (예 : "섹션")로 작업하는 데 문제가있는 이유가 무엇일까요? MS가 다른 지역과 마찬가지로 정규 XML 구문 분석을 사용하지 않기로 결정했기 때문입니다. 예, 맞습니다. 그들은 XML에 대해 많은 선전을했지만 결국에는 "알려진 태그"를 찾고 새로운 무언가가 나올 때 물건을 엉망으로 만드는 "어리석은"파싱 엔진으로 되돌아갑니다.

IE8과 "load", "get"및 "post"와 관련된 jquery 문제도 마찬가지입니다. 다시 말하지만, Microsoft는 버전 8에서 "자신의 길을 걷기"로 결정했습니다. IE9에서이 문제를 해결하기를 바라며 (d) 현재 유일한 옵션은 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />.

오, 마이크로 소프트가 우리를 포럼에 다시 게시하게해서 놀랍습니다. ;)


0

제 경우의 해결책은 액세스하려는 URL에서 특수 문자를 가져 오는 것이 었습니다. 거기에 물결표 (~)와 백분율 기호가 있었고 $ .get () 호출이 조용히 실패했습니다.


0

확인! jQuery가로드되고 있음을 알고 있습니다. 알아jQuery.textshadow.js로드 중이 있습니다. 개발자 도구에서 두 스크립트를 모두 찾을 수 있습니다.

이상한 부분 :이 코드는 콘텐츠 영역에서 작동하지만 배너에서는 작동하지 않습니다. 전용으로도fixIE.css . 그리고 CSS를 인라인으로 넣으면 작동합니다. (물론 FireFox를 엉망으로 만듭니다.)

나는 행운이없이 배너의 텍스트 필드 주위에 조건부 IE 스팬을 넣었습니다.

나는 아무런 차이를 발견하고 모두 같은 오류를 가지고 jquery-1.4.2.min.jsjquery-1.2.6.min.js. jquery.textshadow.js이 문제에 대한 해결책을 찾는 동안 jQuery 사이트에서 다운로드되었습니다.

이것은 웹 사이트에 게시되지 않습니다

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