2

이것은 이상한 IE 버릇입니다. 다음 단계는 다음과 같습니다IE에서 boolean true가 toJSON 메서드를 사용하는 이유는 무엇입니까?

  1. 인터넷 익스플로러 8
  2. msn.com로 이동이 개발 도구는
  3. 스위치 브라우저 모드 당겨에 "IE8 (호환)보기"
  4. 스위치 문서 모드로 "IE7 표준"
  5. true.toJSON()
: 스크립트 탭에
  • 스위치는
  • 는 다음 스크립트를 실행3210

    true을 반환합니다. 다른 어떤 브라우저도 이것을하지 않습니다. 어떤 점에서 부울 값 true$.isEmptyObject()으로 전달하기 때문에 jQueryUI의 툴팁 위젯이 IE에서 실패하게 만들기 때문에 문제가 발생합니다. 일반적으로 true을 전달하면 true이 반환되지만 true에는 연결된 메소드 (toJSON)가 있기 때문에 false을 반환하고 위젯을 위반합니다.

    같은 테스트를 시도 할 수있는 사이트 (예 : Google)가 있고 true.toJSON()이 아무것도 반환하지 않고 중단된다는 사실을 발견했습니다. 이 이상한 toJSON 방법은 무엇이며 어떻게 제거합니까?

  • +0

    정말 IE7을 지원해야합니까? 어쩌면 당신은'true.toJSON'을 삭제할 수 있습니다. 'true'는 부울 객체입니다 –

    +2

    아마도이 객체는'delete Boolean.prototype.toJSON'이어야합니다 -하지만 그건 정말 나쁜 생각 같습니다. – Hamish

    +3

    이것은 [msn.com] (http://www.msn.com/)과 관련이있는 것으로 보입니다. 다른 사이트를 사용해보십시오. 대부분 사이트가 없으니 찾으십시오. 이 MSN은 ['Boolean.prototype'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Boolean/prototype)을 확장하여 메서드 자체를 정의했습니다. –

    답변

    2

    :

    인수는 항상 브라우저에서 일관된 결과를 제공하지 않을 수 있습니다 다른 종류의 객체의 (DOM 요소, 원시 문자열/숫자, 호스트 오브젝트)와 같은 자바 스크립트 객체 일반해야한다.

    즉, 툴팁 위젯을 수정하십시오.

    +1

    맞습니다. 툴팁 위젯에 대한 결함을 기록했습니다. http://bugs.jqueryui.com/ticket/9110 – lyoung

    +0

    JS 오류의 원인은 jquery-ui 코드의 하위 집합 만 사용했기 때문에 발생했다고 생각했습니다. – lyoung