Использование jQuery в расширении Chrome: загрузка в фоновом режиме, доступ во всплывающем окне

#jquery #background #popup #google-chrome-extension

#jquery #фон #всплывающее #google-chrome-extension

Вопрос:

Я создаю расширение Chrome для pageAction с всплывающим окном и скриптом содержимого.

Я хочу использовать jQuery во всплывающем окне, чтобы манипулировать его DOM для представления данных (которые я извлекаю с самого веб-сайта, используя jQuery, введенный в качестве скрипта содержимого). Я знаю, что могу загрузить jQuery непосредственно в popup.html и используйте его. Однако я хотел посмотреть, смогу ли я загрузить jQuery только один раз на фоновой странице и получить к нему доступ во всплывающем окне, а не загружать его каждый раз при открытии всплывающего окна.

Для этого я попробовал следующее во всплывающем окне:

 var background = chrome.extension.getBackgroundPage();
var $ = background.jQuery;
$("#testID").innerHTML = "testing jQuery";
  

но это не сработало — $("#testID") было не определено. Я проверил, что jQuery был загружен на фоновой странице, и использование альтернативных имен для $, например jq, jQuery и т.д., Также не сработало.

Есть предложения о том, как заставить это работать?

Комментарии:

1. Получен ваш запрос на слияние, но учетные записи, которые вы связали, те же самые.

2. @TimPost — Привет, Тим, мой номер незарегистрированного пользователя 708921, а мой зарегистрированный номер пользователя 709233. Пожалуйста, объедините мою незарегистрированную учетную запись с моей зарегистрированной учетной записью. Спасибо.

Ответ №1:

 $("#testID", document).html("testing jQuery");
  

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

Комментарии:

1. Спасибо, это сработало, и очевидным продолжением является определение, например var _$ = function(str) { return chrome.extension.getBackgroundPage().jQuery(str,document); }