Расширение Chrome; откройте ссылку из popup.html на новой вкладке
Я делаю расширение Chrome, и мне помогли в этом сообщении здесь.
Теперь моя проблема заключается в том, как открыть новую вкладку хром, которая имеет URL-адрес ссылки, которую я нажал в popup.html
. Я попытался сделать так, как кто-то предложил в своих ответах в другом подобном вопросе, например, установить атрибут <a>
target
в _blank
, но единственный результат - это то, что chrome открывает новую вкладку, но на новой вкладке находится мой popup.html.
Любая идея, как это решить?
Спасибо.
Ответы
Ответ 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;
}
и все работает как ожидалось.