2009-02-02 5 views
0

북마크릿에서 jQuery를 사용하려고합니다. 즉, JavaScript가 삽입 될 페이지를 제어 할 수 없습니다. . noConflict에 대한 내용은 jQuery를 먼저 삽입해야합니다. 북마크릿의 경우, 그 반대가 사실입니다.jQuery : "this.cloneNode는 함수가 아닙니다."프로토 타입이있는 페이지에 포함 된 경우

그렇다면 누구나 가능합니까? prototype.js를 사용하는 페이지를 제외하고 작동하는 것으로 나타났습니다. 이러한 페이지에서 jQuery UI 라이브러리를 사용하려고하면 "this.cloneNode는 jQuery 내부에있는 함수가 아닙니다."라는 오류 메시지가 나타납니다. 아마도 프로토 타입의 일부가 해당 항목과 관련되어 있기 때문입니다.

도움/조언을 보내 주시면 감사하겠습니다.

+0

"자바 스크립트를 삽입 할 페이지를 제어 할 수 없습니다."라는게 무슨 의미입니까? 당신은 페이지에 자바 스크립트를 삽입 할 수있는 능력이 있다면 당신은 또한 페이지를 제어 할 수 있습니다. –

+0

전체 jQuery 라이브러리를 책갈피 릿릿에 포함 시키려고합니까 아니면 동적 스크립트 태그가있는 페이지에 추가 할 예정입니까? –

+0

문제의 북마크 릿을 게시하거나 더 나은 방법으로 프로토 타입을 사용하는 페이지의 북마크릿에서 JQuery를 사용하는 문제를 보여주는 간단한 테스트 케이스를 게시 할 수 있습니까? –

답변

1

jQuery가 포함되고 다른 라이브러리가 포함되기 전에 noConflict가 호출되어야합니다. 따라서 jQuery를 마지막에 포함시킨 다음 noConflict를 호출하면됩니다. 그러면 $ 변수를 jQuery가 포함되기 전에 있던 값으로 반환해야합니다.

일종의 고통입니다. 귀하의 북마크 릿은 다음과 같아야합니다 :

if(!jQuery) { 
    include_jQuery(); 
    var $ = jQuery.noConflict(); 
} else { 
    var $ = jQuery; 
} 
// do things with $ 

이미 jQuery가있는 경우 페이지가 엉망이되는 것을 피하기 위해.

+0

그게 내가하고있는 일이야. 사실, 나는 심지어 $를 할당하거나 사용하지 않는다. var myCustomVar = jQuery.noConflict(); 나머지 페이지에서 쿵쾅 거리는 것을 방지하기 위해이를 사용합니다. 제 문제는 cloneNode에 jQuery가 오류를 던졌습니다. 프로토 타입의 영향을받는 것 같습니다. –

관련 문제