2012-06-07 6 views
9

Google 크롬 확장 프로그램에서 웹 페이지의 스크립트와 충돌하지 않고 jQuery를 사용할 수있는 방법은 무엇입니까? 웹 페이지에서 jQuery와 다른 스크립트를 사용하면 $, 내 콘텐츠 스크립트가 죽거나 그 웹 페이지가 죽기 때문에Chrome 확장 프로그램에서 jQuery를 사용하는 방법 contentcript를 충돌없이 사용하는 방법

+3

나는 그것을하지 않습니다. 콘텐츠 스크립트와 페이지는 격리되어 있습니다. –

답변

27

진짜 대답은 "자체 실행 개인 기능"을 사용할 필요가 없다는 것입니다. 콘텐츠 스크립트는 executed in isolation이므로 웹 사이트에서 의도적으로 사용하는 리소스와 충돌 할 수 없음을 이해해야합니다.

콘텐츠 스크립트에서 라이브러리를 사용하려는 경우 선호하는 방법은 확장 프로그램/앱에 라이브러리를 포함시킨 다음 매니페스트에서 먼저로드하는 것입니다.

{ 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ] 
    ... 
} 

이 myscript.js를 개인 콘텐츠 스크립트 환경에로드 한 후되고 jquery.js가 발생합니다. 귀하의 코드는 이 포함되어 있지 않으므로 훨씬 깨끗하고 모듈화 될 것입니다. 외부 라이브러리 용 코드입니다.

자료 :https://developer.chrome.com/extensions/content_scripts

+1

콘텐츠 스크립트가 JavaScript 환경을 변경하는 방식 때문에 문제가되지 않습니다. 공식 문서의 [실행 환경] (http://code.google.com/chrome/extensions/content_scripts.html#execution-environment) 섹션에서이를 잘 설명합니다. – Alasdair

+0

문서에서 jquery의 사례를 정확하게 다루고 있습니다. "예를 들어 콘텐츠 스크립트에는 JQuery v1이 포함될 수 있고 페이지에는 JQuery v2가 포함될 수 있으며 서로 충돌하지 않을 것입니다." –

+0

jQuery 자체는 라이브러리 일 뿐이며 사용자가 말하지 않은 내용은 변경하지 않습니다. 대부분의 라이브러리 공통 라이브러리와 마찬가지로 하나 이상의 전역 변수를 사용하여 기능을 노출합니다. 어떤 지침없이 DOM을 변경하는 라이브러리를 사용하고 있다면 아마도 그 동작이 해당 기능과 함께 사용되기 때문에이를 알고있을 것입니다. – Alasdair

관련 문제