Расширение Chrome: Как открыть ссылку в новой вкладке?
в моей папке Stackoverflow, у меня есть stackoverflow.ico и 2 архива ниже. При импорте его в Chrome он показывает значок в адресной строке, но когда я нажимаю на него, Chrome не открывает новую вкладку. Что я делаю не так?
манифест.json
{
"name": "Stackoverflow",
"version": "1",
"browser_action":
{
"default_icon": "stackoverflow.ico"
},
"background":
{
"page": "index.html"
},
"permissions": ["tabs"],
"manifest_version": 2
}
.HTML-код
<html>
<head>
<script>
chrome.browserAction.onClicked.addListener(function(activeTab)
{
var newURL = "http://stackoverflow.com/";
chrome.tabs.create({ url: newURL });
});
</script>
</head>
</html>
3 ответов:
проблема в том, что вы нарушаете манифест версии 2-х
content security policy. Исправить все, что вам нужно сделать, это избавиться от встроенного скрипта, в этом случае ваш фонpage. Превратите его в фонscriptтакой:манифест.json
"background":{ "scripts": ["background.js"] },фон.js
chrome.browserAction.onClicked.addListener(function(activeTab){ var newURL = "http://stackoverflow.com/"; chrome.tabs.create({ url: newURL }); });если по какой-то причине вам нужно, чтобы это была страница, просто включите скрипт в качестве внешнего файла и объявите его как страницу как и раньше.
в моем случае мне нужно было открыть ссылку в новой вкладке, когда я щелкнул ссылку в всплывающем окне расширения, он отлично работал с
targetатрибут установлен в_blank:<a href="http://www.example.com" target="_blank">Example</a>
Я бы предпочел простое решение - просто добавьте действие в onclick
$('body').on('click', 'a[target="_blank"]', function(e){ e.preventDefault(); chrome.tabs.create({url: $(this).prop('href'), active: false}); return false; });это откроет все ссылки (даже ссылки, которые были динамически созданы), которые имеют атрибут target="_blank"в новой вкладке без потери всплывающего фокуса.
Comments