Чтобы добавить ко всем ответам, печать объекта как строки JSON также является опцией.
Использование Jackson:
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));
Использование Gson:
Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));
Поскольку сценарий содержания имеет свои собственные ограничения,
chrome.tabs
доступен только в фоновых сценариях и всплывающих сценариях.
Если вы хотите использовать chrome.tabs
, тогда передайте сообщение от content_script в фоновый скрипт и играть с chrome.tabs
.
Проверьте этот ответ также https://stackoverflow.com/a/6718277/449345 Этот файл работал для меня
chrome.tabs.getSelected(null, function(tab){
console.log(tab);
});
https://developer.chrome.com/extensions/tabs#method-getSelected показывает
getSelected
chrome.tabs. getSelected (integer windowId, обратный вызов функции) Устаревший с Chrome 33. Используйте tabs.query {active: true}. Получает вкладку, выбранную в указанном окне.
blockquote>Возможно, вы должны использовать chrome.tabs.query в popup.js , например
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ console.log(tabs[0].url); });
, перезагрузить расширение и проверить результат в элементе проверки вашего расширения.
результат изображения
код изображения
https://developer.chrome. com / extensions / tabs # type-Tab показывает, что отображается URL-адрес, отображаемый вкладкой. Это свойство присутствует только в том случае, если манифест расширения содержит разрешения «tabs». (Только для того, чтобы напомнить, что кто-то забыл. Я забыл об этом, когда я просто проверил его.)
Скрипты содержимого имеют ограниченный доступ к API Chrome. Этот доступ не включает API, который вы пытаетесь использовать (например, chrome.tabs
). Если вам нужно использовать этот API, вам нужно будет сделать это в фоновом скрипте 1.
Как указано в документации к скрипту в Chrome , API, доступный для скрипта содержимого: [Я разместил устаревшие методы в формате strikethrough]:
blockquote>
- extension ( getURL , inIncognitoContext , lastError , onRequest , sendRequest )
- i18n
- время выполнения ( connect , getManifest , getURL , id , onConnect , onMessage , sendMessage )
- storage
Пара перечисленных API устарела и была на некоторое время. Те, которые устарели, переместились в разные места (также перечисленные выше):
extension.onRequest
➞runtime.onMessage
extension.sendRequest
➞runtime.sendMessage
Если он официально не устарел,
extension.lastError
также доступен какruntime.lastError
. На этом этапе его обычно называют в этом месте:
extension.lastError
➞runtime.lastError
Разделите свой расширение в фоновые скрипты и скрипты содержимого
Вам нужно будет отделить свой код от того, что должно быть в фоновом скрипте и что должно быть в сценариях контента, на основе возможностей, доступных для каждого типа скрипт. Скрипты содержимого имеют доступ к DOM веб-страницы, на которую они вводятся, но ограниченный доступ к API расширений. Фоновые сценарии имеют полный доступ к API расширений, но не имеют доступа к содержимому веб-страницы. Вы должны прочитать обзор расширений Chrome Chrome и связанные с ним страницы, чтобы понять, какая функциональность должна располагаться в том типе сценария.
для связи между вашими сценариями контента и фоновыми скриптами. Для этого вы можете использовать передачу сообщений . Это позволяет вам передавать информацию между двумя сценариями для выполнения действий, которые невозможны, используя только один тип скрипта. Например, в вашем скрипте содержимого вам может понадобиться информация, доступная только из одного из других API Chrome, или вам нужно что-то, что может быть выполнено (или только) с помощью одного из других API расширения Chrome. В этих случаях вам понадобится отправить сообщение в фоновый скрипт, используя
chrome.runtime.sendMessage()
, чтобы сказать, что нужно сделать, при этом обеспечивая достаточную информацию для него чтобы иметь возможность сделать это. Затем ваш фоновый скрипт может вернуть желаемую информацию, если она есть, в ваш скрипт содержимого. В качестве альтернативы вы будете иметь время, когда обработка будет в основном выполняться в фоновом скрипте. Фоновый сценарий может вводить сценарий содержимого или просто сообщение уже введенного сценария, получать информацию со страницы или вносить изменения в веб-страницу.
- Фоновый скрипт означает любой скрипт то есть в фоновом контексте. В дополнение к фактическим
background
скриптам , это включает всплывающие окна и страницы опций и т. Д. Однако единственная страница, на которой вы можете быть уверены, что она всегда доступна для приема сообщений из сценария контента, является вашей фактическойbackground
скриптов , определенных в manifest.json . Другие страницы могут быть доступны в некоторых случаях в результате взаимодействия пользователя с браузером, но они недоступны последовательно.Этот ответ был перемещен из дублирующего вопроса , а затем модифицировано.