2010-03-18 4 views
0

나는 최근 여러 가지 방법으로 엉망이 된 사이트를 상속 받았다. 나는 PHP 녀석의 더이고 처음에 js는 잘 작동하고 있었다. 자바 스크립트 또는 포함 파일을 변경하지 않았지만 몇 가지 내용을 수정 한 후 방화 상자에서 오류가 발생했습니다.Jquery + Prototype conflict

a.dispatchEvent is not a function 
emptyFunction()protot...ects.js (line 2) 
emptyFunction()protot...ects.js (line 2) 
fireContentLoadedEvent()protot...ects.js (line 2) 

[Break on this error] var Prototype={Version:'1.6.0.2',Brows...pe,Enumerable);Element.addMethods(); 
protot...ects.js (line 2) 
this.m_eTarget.setStyle is not a function 

[Break on this error] this.m_eTarget.setStyle({ position: 'relative', overflow:'hidden'}); 
protot...ects.js (line 43) 
uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE)" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: js/prototype_effects.js :: anonymous :: line 2" data: no] 

주변에 인터넷 검색을 나는 그러나 내가 어디 모르겠어요 나는이 부분을 만지지 않았다되고, 때로는 JQuery와 + 프로토 타입이 잘 작동하지 않고 스크립트를 정리하면이 문제를 해결할 수있는 몇 가지 게시물을 발견 디버깅을 시작할 필요가 있습니다. 이전 개발자는 prototype, scriptaculous를로드하는 head.inc 파일을 통합했으며 많은 페이지가 라이트 박스와 같은 기능을 위해 jquery를로드하는 하위 템플릿에 있습니다.

사이트

http://dawn.mikeyhill.com

어떤 도움이 감사에 임시 보관되어 있습니다.

답변

1

프로토 타입 라이브러리는 방해가됩니다. 모든 종류의 메소드를 Javascript의 핵심 객체에 추가합니다. 객체가 for(var k in o)을 통해 반복 될 때, 반복은 자바 스크립트가 아직 반복 불가능한 속성을 지원하지 않기 때문에 이러한 새로운 메소드를 포함하게됩니다. Prototype itation은 항상이 문제에 영향을받지 않는 각각의()와 같은 시설을 통해 수행됩니다.

문제는 여전히 오래된 "for-var-in"루프를 사용하고있는 다른 코드에서 발생합니다. 이 코드는 중단됩니다. Prototype이 다른 라이브러리에서 작동하지 않는 경우의 99 %에서 문제는 반복으로 인한 것입니다.

당신은 코드를 만지지 않았고 나는 그렇게이 세 가지 옵션 잎 믿는다 고 말을하는지 :

  • 이 문제는 이전에 있었다 그러나 당신은 문제가있는 코드는 그것을
  • 통지를하지 않았다 특수한 경우에만 실행됩니다 (특수 입력으로 인해). 이전 프로그래머는 절대로이 입력을 시도하지 않았습니다.
  • 다른 요인으로 인해 문제가 발생한 곳은 1 %입니다.