2015-04-10 3 views
1

По the docs:Попытка ссылки на страницы вариантов: Не разрешается загружать локальный ресурс

Чтобы добавить ссылку на страницу настроек вашего расширения, использовать URL, как хром: // расширения опций = yourextensionid. Это загружает хром: // расширения, а затем автоматически открывает вашу страницу параметров в диалоге.

<a href="chrome://extensions?options=aebdgjojlaaljcehfkjaknmlilmblnip"> 
    Go to options. 
</a> 

В скрипте содержимого (вводится в веб-страницы), я поставил такую ​​ссылку, но когда я нажимаю, я получаю сообщение:

Not allowed to load local resource: chrome://extensions/?options=blahblahblah 

Я проверил, что строка идентификатора верна. Я попытался добавить options.html в web_accessible_resources, но безрезультатно. Возможно ли запустить страницу параметров из сценария контента?

ответ

1

Да, вы не можете напрямую ссылаться на любую страницу chrome://.

Вместо этого вы можете использовать обработчик кликов, который вызывает (или делегирует вашу фоновую страницу, если это сценарий содержимого) chrome.tabs.create({url: "..."}), который может открывать привилегированные страницы.

Или еще лучше, есть upcoming API call chrome.runtime.openOptionsPage() и ударит Stable в Chrome 42.

+0

еще лучше, не использовать новую систему параметров на всех , –

+0

@ DanielHerr В конце концов, это будет устаревшим. – Xan

+0

Не chrome.tabs.create ({url: "options.html"}) –

0

Это, как я это делаю:

//from chrome 42 onward, per Xan on http://stackoverflow.com/questions/6782391/programmatically-open-a-chrome-plugins-options-html-page 
//chrome.runtime.openOptionsPage(); 

//until then... 
var optionsUrl = "chrome://extensions/?options=" + chrome.runtime.id 
chrome.tabs.query({url: optionsUrl}, function(tabs) { 
    if (tabs.length) { 
    chrome.tabs.update(tabs[0].id, {active: true}); 
    } else { 
    chrome.tabs.create({url: optionsUrl}); 
    } 
}); 
Смежные вопросы