Вызов chrome.i18n.getMessage (...) из скрипта содержимого - PullRequest
2 голосов
/ 22 мая 2011

Мое расширение Google Chome использует скрипт контента, объявленный в своем манифесте через:

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["js/jquery-1.6.1.min.js", "js/content.js"]
    }
  ],

. Он также поставляется с пакетом ресурсов, связанным с локализацией, в _locales/en.

Lookingключ, использующий chrome.i18n.getMessage(...), работает безупречно из общего кода расширения (т. е. в options.html), но он не работает (т. е. ничего не возвращает) при выполнении из js/content.js, пока этот сценарий выполняется в контекстеобычная веб-страница.

Это общее ограничение ( эта ошибка Chrome может быть связана) или кому-то удалось заставить это работать?

Ответы [ 3 ]

3 голосов
/ 17 октября 2012

Вы должны иметь возможность использовать chrome.i18n.getMessage(...) из скриптов содержимого.Попробуйте перезапустить весь браузер.

В настоящее время работает: версия 24.0.1297.0 dev-m

Я также был поражен этим.Я не уверен насчет сценария оригинального плаката, но мои проблемы были вызваны ошибкой (http://code.google.com/p/chromium/issues/detail?id=53628),, на которую ссылался ответ в отчете об ошибках Тило. Ошибка в том, что перезагрузка messages.json ненадежна, когдаперезагрузка вашего расширения со страницы менеджера расширений. Первоначально я начал с пустого messages.json, а затем добавил его, пытаясь использовать chrome.i18n.getMessage. Я тоже не получил никаких ошибок, но не получил свое сообщение какожидаемый. Как бы нелогично это ни звучало и будучи новичком в разработке в целом, я подумал, что это может быть один из тех API, которые не могут запускаться из скриптов контента. К счастью, это не так.

1 голос
/ 22 мая 2011

Я бы сказал, отчет об ошибке должен быть создан.

Он нигде не говорит, что он должен работать, но не выдает ошибку, которая chrome.i18n.getMessage недоступен из скриптов контента, как и все другие вызовы API.Так что это уже ошибка.

Было бы неплохо иметь такую ​​возможность.Я думаю, что они начали реализовывать это, но или забыли или оставили это для лучших времен.Отчет об ошибке будет хорошим напоминанием.

Между тем, вы можете получать строки локализации с фоновой страницы через обмен сообщениями.Возможно, отправьте один запрос в начале скрипта контента, запрашивая массив всех необходимых вам строк.

0 голосов
/ 22 февраля 2014

Строки загружаются только один раз при активации расширения.

Когда функция возвращает "", это просто означает, что индекс не найден.

Достаточно просто отключить «Chrome Extensions» и снова включить расширение.

Затем функция возвращает локализованные строки - как и ожидалось @ Chromium 31.

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