Ich mache eine Chrome-Erweiterung und mir wurde in diesem Beitrag hier geholfen.
Mein Problem ist nun, wie Sie eine neue Registerkarte von Chrome öffnen, die als Link den Link enthält, auf den ich im popup.html
geklickt habe. Ich habe versucht, so zu tun, als würde jemand in ihren Antworten ähnliche ähnliche Fragen stellen, wie das Attribut target
von <a>
auf _blank
setzen, aber das einzige Ergebnis ist, dass Chrome eine neue Registerkarte öffnet, aber in der neuen Registerkarte ist meine popup.html.
Irgendeine Idee, wie man das löst?
Vielen Dank.
Sie sollten chrome.tabs module verwenden, um den gewünschten Link in einem neuen Tab manuell zu öffnen. Versuchen Sie es mit diesem jQuery-Snippet in der popup.html:
$(document).ready(function(){
$('body').on('click', 'a', function(){
chrome.tabs.create({url: $(this).attr('href')});
return false;
});
});
Siehe meinen Kommentar https://stackoverflow.com/a/17732609/1340178
Ich hatte das gleiche Problem und dies war mein Ansatz:
<script src="popup.js" ></script>
Fügen Sie den folgenden Code zu popup.js hinzu:
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});
};
})();
}
});
Das ist alles, Links sollten danach funktionieren.
Wenn Sie JQuery nicht verwenden möchten, fügen Sie dies in Ihre popup.js ein. Wenn Sie darauf klicken, werden alle Links in einer neuen Registerkarte geöffnet
Denken Sie daran, die Berechtigung "Registerkarten" im manifest.json zu deklarieren
window.addEventListener('click',function(e){
if(e.target.href!==undefined){
chrome.tabs.create({url:e.target.href})
}
})
Die anderen Antworten funktionieren. Der Vollständigkeit halber kann nurtarget="_blank"
hinzugefügt werden.
Oder wenn Sie bestimmte Links "manuell" hinzufügen möchten, finden Sie hier eine Möglichkeit (basierend auf den anderen Antworten, die bereits hier angegeben sind):
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"});
}
Ich hatte das gleiche Problem. Es sah so aus, als ob Konrads Lösung funktionieren würde, aber es öffnete sich gleichzeitig mehrere Registerkarten. Dies geschah nur nach der ersten Erweiterungsinstallation. Also habe ich es geändert
if (e.target.classList.contains("a-link")) {
chrome.tabs.create({url: $(e.target).attr('href')});
return false;
}
und alles funktioniert wie erwartet.
Tab-URL zum Freigeben des Blogs in einem neuen Tab senden:
// popup.js
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs){
var url = tabs[0].url;
var title = tabs[0].title;
document.getElementById('linkQZone').onclick = function () {
var url1 = 'https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' + url + '&title=' + title + '&desc=&summary=&site=';
chrome.tabs.create({active: true, url: url1});
};
document.getElementById('linkQQ').onclick = function () {
var url1 = 'https://connect.qq.com/widget/shareqq/index.html?url=' + url + '&title=' + title + '&desc=&summary=&site=';
chrome.tabs.create({active: true, url: url1});
};
});