Подтвердить что ты не робот

Расширение Chrome; откройте ссылку из popup.html на новой вкладке

Я делаю расширение Chrome, и мне помогли в этом сообщении здесь.

Теперь моя проблема заключается в том, как открыть новую вкладку хром, которая имеет URL-адрес ссылки, которую я нажал в popup.html. Я попытался сделать так, как кто-то предложил в своих ответах в другом подобном вопросе, например, установить атрибут <a> target в _blank, но единственный результат - это то, что chrome открывает новую вкладку, но на новой вкладке находится мой popup.html.

Любая идея, как это решить?

Спасибо.

4b9b3361

Ответ 1

Вы должны использовать chrome.tabs модуль, чтобы вручную открыть нужную ссылку на новой вкладке. Попробуйте использовать этот фрагмент jQuery в вашем popup.html:

$(document).ready(function(){
   $('body').on('click', 'a', function(){
     chrome.tabs.create({url: $(this).attr('href')});
     return false;
   });
});

Ответ 2

Смотрите мой комментарий fooobar.com/questions/169147/...


У меня была такая же проблема, и это был мой подход:

  • Создайте popup.html со ссылкой (и ссылки не работают при нажатии на Chrome, блокируя их).
  • Создайте popup.js и свяжите его на странице: <script src="popup.js" ></script>
  • Добавьте следующий код в popup.js:

    document.addEventListener('DOMContentLoaded', function () {
        var links = document.getElementsByTagName("a");
        for (var i = 0; i < links.length; i++) {
            (function () {
                var ln = links[i];
                var location = ln.href;
                ln.onclick = function () {
                    chrome.tabs.create({active: true, url: location});
                };
            })();
        }
    });
    

Что все, ссылки должны работать после этого.

Ответ 3

Если вы не хотите использовать JQuery, вставьте это в свой popup.js, и при нажатии кнопки

все ваши ссылки будут открываться на новой вкладке.

Не забудьте объявить разрешение "tabs" в файле manifest.json

window.addEventListener('click',function(e){
  if(e.target.href!==undefined){
    chrome.tabs.create({url:e.target.href})
  }
})

Ответ 4

Другие ответы работают. Для полноты вы также можете просто добавить target="_blank"

Или, если вы хотите "вручную" добавить определенные ссылки, здесь способ (на основе других ответов здесь):

popup.html

<a id="index_link">My text</a>.

popup.js

document.addEventListener('DOMContentLoaded', function() {
   var y = document.getElementById("index_link");
   y.addEventListener("click", openIndex);
}

function openIndex() {
 chrome.tabs.create({active: true, url: "http://my_url"});
}

Ответ 5

У меня была та же проблема. Похоже, решение Konrad сработало, но оно сразу открыло сразу несколько вкладок. Это произошло только после установки первого расширения. Поэтому я изменил его на

if (e.target.classList.contains("a-link")) {
    chrome.tabs.create({url: $(e.target).attr('href')});
    return false;
}

и все работает как ожидалось.