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

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

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

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

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

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

4
Ushnish Basu 15 Апр 2011 в 03:33
Получил ваш запрос на слияние, но аккаунты, которые вы связали, совпадают.
 – 
Tim Post
15 Апр 2011 в 19:54
- Привет Тим, Мой незарегистрированный номер пользователя 708921, а мой зарегистрированный номер пользователя 709233. Пожалуйста, объедините мою незарегистрированную учетную запись с моей зарегистрированной учетной записью. Спасибо.
 – 
Ushnish Basu
16 Апр 2011 в 01:12

1 ответ

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

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

3
serg 15 Апр 2011 в 04:36
1
Спасибо, это сработало, и очевидным продолжением является определение, например. var _$ = function(str) { return chrome.extension.getBackgroundPage().jQuery(str,document); }
 – 
Ushnish Basu
16 Апр 2011 в 01:42