2015-01-28 2 views
1

Я хочу добавить jQuery на веб-страницу (с помощью скрипта содержимого) в расширение Chrome.Невозможно использовать вложенный jQuery

Я стараюсь, но меня что-то смущает.

вот мой manifest.json:

{ 
    "name": "test", 
    "description": "test content script.", 
    "version": "0.0.1", 
    "background": { 
     "scripts": ["jquery-1.10.2.js", "popup.js"] 
    }, 
    "permissions": ["tabs", "notifications", "http://*/*", "https://*/*"], 
    "browser_action": { 
     "default_title": "test", 
     "default_icon": "icon.png" 
    }, 
    "options_page": "manage.html", 
    "content_scripts": [ 
     { 
      "matches": ["http://*/*", "https://*/*"], 
      "js": ["jquery-1.10.2.js"] 
     } 
    ], 
    "manifest_version": 2 
} 

JQuery-1.10.2.js:

/*jquery's orign code*/ 
    console.log("end of jquery"); 

Я вижу сообщение консоли, но я до сих пор не могу использовать JQuery.

Я написал простой веб-сайт и попытался включить jQuery через скрипт контента вместо добавления его с тегом <script>.

В консоли инструментов Dev введите window.jQuery или $("li").siblings().

Если вы включили jQuery на странице, он работает, но если он введен в скрипт контента, он показывает jQuery как неопределенный.

Почему это происходит?

ответ

0

Ситуация очень похожа на this question.

Сценарии содержания в реальном времени in their own, isolated JavaScript context. Это делается так, что скрипты, добавленные расширениями, не конфликтуют со страницей или друг с другом.

Когда вы открываете консоль Dev Tools, она отображает сообщения консоли из всех контекстов веб-страницы: контекст страницы, контексты iframe (которые также изолированы) и контексты сценариев контента. Вот почему вы видите сообщение журнала.

Однако, хотя он может отображать все сообщения одновременно, если вы пытаетесь что-то выполнить, он должен перейти в один контекст. По умолчанию это контекст страницы: <top frame> чуть выше консоли.

Чтобы выполнить что-то в контексте внутренней линии, вы должны переключиться на него:

Switching context

И если вы хотите, чтобы сделать некоторые JavaScript доступными для контекста страницы, вам нужно вводить его в страницу сам как тег <script>. См. this question.

1

Я использовал это, и он отлично работает. возможно, путь вашего jquery неверен.

"content_scripts": [{ 
    "matches": ["http://*/*", "https://*/*"], 
    "js": ["js/jquery.min.js", "js/socket/socket.io.js","js/socket/client.js"], 
    "run_at": "document_idle" 
}] 
+0

Я добавляю console.log («конец jquery») в конце файла jquery, он работает (pirnt на консоли веб-страницы), но метод jquery не может использовать – mirtac

Смежные вопросы