Как открыть новую вкладку из Firefox WebExtension, как если бы пользователь нажал +, чтобы открыть новую вкладку

Я пробовал следующее:

chrome.browserAction.onClicked.addListener(function(tab) 
{ 
    chrome.tabs.create({
        url: "about:newtab"
    });         
});

К сожалению, я не могу открыть новую вкладку about:newtab с помощью tabs.create(). Выдает ошибку безопасности:

Security Error: Content at moz-extension://5cdd4429-f725-49c4-bdc1-547e1acc085b/ may not load or link to about:newtab.

Как мне открыть about:newtab из Firefox WebExtension?


person John Sewell    schedule 09.05.2016    source источник
comment
Интересно, вроде должно работать. Вы пробовали другой URL, кроме about:newtab? Возможно, вам потребуется запросить разрешения в файле manifest.json.   -  person Noitidart    schedule 09.05.2016
comment
Спасибо. Разрешение http://*/*, https://*/*   -  person John Sewell    schedule 09.05.2016
comment
Я добавил ‹all_url›, но он не позволяет использовать about:newtab и chrome://. Допускается только about:blank. Google Chrome менее строг в этом отношении. Любой совет?   -  person John Sewell    schedule 10.05.2016
comment
Попробуйте передать параметр url, он, вероятно, откроет about:newtab. Я спрошу у некоторых пользователей webext, какие разрешения вам понадобятся для chrome://.   -  person Noitidart    schedule 10.05.2016
comment
Спасибо Noitidart, но я не понял, что такое попытка передать параметр URL. Можете ли вы опубликовать код?   -  person John Sewell    schedule 10.05.2016
comment
О, опечатка, упс, я имею в виду это: chrome.tabs.create();   -  person Noitidart    schedule 10.05.2016
comment
Спасибо, приятель, но создание не работает без передачи параметра.   -  person John Sewell    schedule 10.05.2016


Ответы (1)


about:newtab считается привилегированной about страницей. Вы не можете явно открыть его с помощью tabs.create(). Однако вы можете открыть вкладку, чтобы отобразить страницу по умолчанию для новой вкладки. Обычно эта страница по умолчанию будет about:newtab.

Чтобы открыть страницу по умолчанию для новой вкладки, вы можете передать объект tabs.create(), который не содержит url свойство.

Например, чтобы открыть новую вкладку в текущем окне по индексу, который будет использоваться, если пользователь щелкнет значок +, чтобы открыть новую вкладку, вы можете использовать следующее:

chrome.tabs.create({});

Чтобы открыть новую вкладку в index=1 в текущем окне, вы можете сделать:

chrome.tabs.create({index: 1});

По умолчанию вы открываете страницу about:newtab. Однако пользователь мог установить другое расширение, которое изменяет страницу, используемую для новой вкладки. Если это так, эта страница будет использоваться.

person Makyen♦    schedule 02.08.2016