2013-07-30 3 views
5

API расширения расширения Google Chrome предоставляет информацию о текущем открытом окне, используя chrome.devtools.inspectedWindow, но он не предоставляет события для того, когда он изменяется. Я могу обновить или перенаправить страницу, и мне бы хотелось, чтобы панель DevTools добавлялась для уведомления. Есть ли способ для этого?chrome.devtools.inspectedWindow change event

Подумайте о панели элементов, она всегда обновляется с текущей DOM. Это может быть трудно реализовать, чтобы оставаться в курсе событий, как это происходит, всякий раз, когда происходит мутация DOM, но мне бы хотелось хотя бы оповестить, когда загружена новая страница (возможно, на событие document.onload, почему)

Любые идеи о том, как реализовать это, спасибо?

ответ

10

Слушайте один из событий chrome.webNavigation и notify devtools при каждом обновлении.

Другой способ обнаружения того, что проверяемая страница выгружается, заключается в использовании события chrome.devtools.network.onNavigated (доступно только на странице расширения devtools).

+0

ОК, спасибо за то, что вы дали мне руководство, вот более узкое объяснение того, что я хочу построить, может быть, вы можете указать мне несколько на правильные методы API, потому что обмен сообщениями между фоном, страницами и сценариями devtools может быть сложным , Я хочу показать некоторые статистические данные на основе некоторых глобальных переменных со страниц, использующих определенную структуру JS. Поэтому мне нужно будет получить доступ к переменным JS во время выполнения текущей открытой страницы на моей странице devtools. Это возможно? Спасибо – treznik

+1

Да, это возможно. Я предлагаю добавить кнопку, чтобы пользователь мог вручную запустить ваш код (который проверяет глобальные переменные). API, с которыми я связан, достаточен для начала работы. Дайте мне знать, когда вы застрянете. –

+0

OK, мне удалось связать chrome.webNavigation.onПолученные обработчики независимых панелей devtools через фоновый скрипт. До сих пор так хорошо, но как мне получить из основных параметров 'details' из https://developer.chrome.com/extensions/webNavigation.html#event-onCompleted для доступа к глобальным переменным этой вкладки? Спасибо – treznik

4

У меня был такой же вызов, и это был единственный результат, который я нашел в Google, поэтому я хотел ответить с решением, которое я нашел. Ключ лежит не в chrome.devtools.inspectedWindow, а в chrome.tabs.onUpdated. Фактически, я нашел chrome.tabs.*, чтобы быть намного полезнее в целом. Вот код, который я использую для просмотра изменений состояния из моего расширения;

chrome.tabs.onUpdated.addListener(function (tabId, changes, tabObject) { 
    console.log("Status of", tabId, "is", changes.status); 
    if (changes.status == "complete") { 
    console.log("Tab Load Complete"); 
    } 
}); 

Вы также можете использовать chrome.tabs.* API, чтобы проверить, является ли произошло изменение состояния на текущей вкладке или нет.

+1

Вы не можете использовать код chrome.tabs на странице devtools, на которую запрашивает OP. Я не собираюсь спускать вас вниз, так как кажется, что некоторые люди, очевидно, нашли ваше решение полезным, но я сомневаюсь, что они пытались создать панель Devtools. – WORMSS