Расширение 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>
1542   3  

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

    Ничего не найдено.