Программно открыть страницу options.html плагина Chrome?

Я попытался проверить это, и он не работал, но мне любопытно, почему Apple использует его. Я был только на https://linkmaker.itunes.apple.com/us/ и заметил в сгенерированном коде, который он предоставляет, если вы выберете переключатель «Большая кнопка», они используют встроенный медиа query.


note: добавлены разрывы строк для удобочитаемости, исходный сгенерированный код минимизирован

29
задан davidscolgan 21 July 2011 в 20:33
поделиться

3 ответа

Существует новый метод, который активирован , начиная с Chrome 42 :

chrome.runtime.openOptionsPage(function callback)

Откройте параметры вашего внутреннего номера страницу, если возможно.

Точное поведение может зависеть от клавиши options_ui или options_page вашего манифеста или от того, что Chrome поддерживает в данный момент. Например, страница может быть открыта в новой вкладке, в chrome://extensions, в приложении, или она может просто сфокусироваться на открытой странице параметров. Это никогда не приведет к перезагрузке страницы вызывающего абонента.

Если ваше Внутреннее расширение не объявляет страницу параметров, или Chrome не смог создать ее по какой-либо другой причине, обратный вызов установит lastError.

48
ответ дан Xan 21 July 2011 в 20:33
поделиться

Открыть или переключиться на уже открытую страницу параметров (вместо открытия дубликата):

var optionsUrl = chrome.extension.getURL('options.html');

chrome.tabs.query({url: optionsUrl}, function(tabs) {
    if (tabs.length) {
        chrome.tabs.update(tabs[0].id, {active: true});
    } else {
        chrome.tabs.create({url: optionsUrl});
    }
});
24
ответ дан NARKOZ 21 July 2011 в 20:33
поделиться

Без использования Chrome API, только стандартных веб-API, возможно следующее:

window.open("chrome-extension://ghipmampnddcpdlppkkamoankmkmcbmh/options.html")

Или для перехода от видимой страницы к странице расширения:

location.href = "chrome-extension://ghipmampnddcpdlppkkamoankmkmcbmh/options.html"

Для этого необходимо жестко указать идентификатор расширения.

Вероятно, единственный раз, когда это предпочтительнее использования Chrome API, это когда он вызывается из контекста без расширения (а не из исходного сценария «с фоновой страницы»). Однако обратите внимание, что веб-контекст не может перейти на страницу chrome-extension://* (это приведет к about:blank), если он не объявлен как веб-доступный .

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

1
ответ дан 2 revs, 2 users 53% 21 July 2011 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: