Передайте переменную на веб-страницу из расширения Chrome как можно скорее - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь определить, установлено ли мое расширение Chrome с помощью js, выполненной на моем сайте. Я нашел несколько примеров, некоторые из которых я даже не понимаю или мог заставить их работать. То, что я пробовал и вроде работало, это добавление элементов в DOM или изменение какого-либо свойства css. Например:

На моей фоновой странице расширения у меня есть:

function changeBG(tab){
     chrome.tabs.executeScript(tab.id, {
      code: ' document.body.bgColor="red" '
     });
}

chrome.tabs.onUpdated.addListener(changeBG);

На моем сайте:

<script>
  alert(document.body.bgColor);
</script>

Фон становится красным, но .bgColor имеет значение null, потому что я пытаюсь прочитать его в верхней части кода моего веб-сайта, как только страница начинает загружаться. После загрузки страницы я могу прочитать ее, и она возвращает «красный». (то же самое происходит, если вставить элемент на страницу, а затем попытаться прочитать innerHTML или свойство элемента).

Но я не хочу ждать загрузки или чего-либо еще, потому что мой контент зависит от того, установлено расширение или нет.

Я также попробовал метод загрузки изображения из содержимого расширения, но еще раз это косвенный ¿асинхронный? способ.

Я не хочу «менять» содержимое, Я хочу знать, установлено ли расширение, прежде чем продолжать загружать что-либо еще на мой сайт .

Кто-нибудь знает, как я мог это сделать?

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Как я понимаю, проверка JavaScript выполняется слишком поздно для вас, поскольку содержимое веб-страницы уже обработано браузером. Если вы хотите узнать, включено ли расширение до загрузки какого-либо контента, вы должны проверить его на стороне сервера. Способ сделать это состоит в том, чтобы ваше расширение добавляло некоторую подпись к заголовкам, отправляемым браузером на серверы. Затем, если подпись присутствует, вы будете знать, что отправителю запроса установлено ваше расширение, и вы сможете вернуть соответствующий контент. Обработка заголовка описана здесь . Вам, вероятно, понадобится использовать это: chrome.webRequest.onBeforeSendHeaders.addListener.

0 голосов
/ 21 января 2012

Поскольку это ваш собственный веб-сайт, используйте метод chrome.app.isInstalled, используемый для встроенной установки . Сначала вам нужно будет подтвердить свой домен с помощью Инструментов для веб-мастеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...