Я попытался проверить это, и он не работал, но мне любопытно, почему Apple использует его. Я был только на https://linkmaker.itunes.apple.com/us/ и заметил в сгенерированном коде, который он предоставляет, если вы выберете переключатель «Большая кнопка», они используют встроенный медиа query.
note: добавлены разрывы строк для удобочитаемости, исходный сгенерированный код минимизирован
Существует новый метод, который активирован , начиная с Chrome 42 :
chrome.runtime.openOptionsPage(function callback)
Откройте параметры вашего внутреннего номера страницу, если возможно.
Точное поведение может зависеть от клавиши
options_ui
илиoptions_page
вашего манифеста или от того, что Chrome поддерживает в данный момент. Например, страница может быть открыта в новой вкладке, вchrome://extensions
, в приложении, или она может просто сфокусироваться на открытой странице параметров. Это никогда не приведет к перезагрузке страницы вызывающего абонента.Если ваше Внутреннее расширение не объявляет страницу параметров, или Chrome не смог создать ее по какой-либо другой причине, обратный вызов установит
lastError
.
Открыть или переключиться на уже открытую страницу параметров (вместо открытия дубликата):
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});
}
});
Без использования Chrome API, только стандартных веб-API, возможно следующее:
window.open("chrome-extension://ghipmampnddcpdlppkkamoankmkmcbmh/options.html")
Или для перехода от видимой страницы к странице расширения:
location.href = "chrome-extension://ghipmampnddcpdlppkkamoankmkmcbmh/options.html"
Для этого необходимо жестко указать идентификатор расширения.
Вероятно, единственный раз, когда это предпочтительнее использования Chrome API, это когда он вызывается из контекста без расширения (а не из исходного сценария «с фоновой страницы»). Однако обратите внимание, что веб-контекст не может перейти на страницу chrome-extension://*
(это приведет к about:blank
), если он не объявлен как веб-доступный .
В таком сценарии следует также рассмотреть возможность взаимодействия с веб-страницей либо через скрипт контента, либо вместо внешнего обмена сообщениями .