google chrome - open - Extensión de Chrome; abra un enlace desde popup.html en una nueva pestaña
javascript open new window (5)
Estoy haciendo una extensión de Chrome y obtuve ayuda en esta publicación aquí .
Mi problema ahora es cómo abrir una nueva pestaña de cromo que tiene como URL el enlace en el que hice clic en el popup.html
. Traté de hacer lo que alguien sugirió en sus respuestas en otra pregunta similar, como establecer el target
atributo de <a>
en _blank
pero el único resultado es que Chrome abre una nueva pestaña, pero en la nueva pestaña es mi popup.html.
Alguna idea de como resolver esto?
Gracias.
Si no desea utilizar JQuery, insértelo en su popup.js y hará que todos sus enlaces se abran en una nueva pestaña cuando se haga clic en él.
Recuerde declarar el permiso de "pestañas" en el manifest.json
window.addEventListener(''click'',function(e){
if(e.target.href!==undefined){
chrome.tabs.create({url:e.target.href})
}
})
Debe usar el módulo chrome.tabs para abrir manualmente el enlace deseado en una nueva pestaña. Intente utilizar este fragmento de jQuery en su popup.html:
$(document).ready(function(){
$(''body'').on(''click'', ''a'', function(){
chrome.tabs.create({url: $(this).attr(''href'')});
return false;
});
});
Yo tuve el mismo problema. Parece que la solución de Konrad funcionaría, pero abrió varias pestañas a la vez. Esto sucedió solo después de la primera instalación de extensión. Así que lo cambié a
if (e.target.classList.contains("a-link")) {
chrome.tabs.create({url: $(e.target).attr(''href'')});
return false;
}
y todo está funcionando como se esperaba
Las otras respuestas funcionan. Para completar, también puede agregar target="_blank"
O si desea agregar enlaces "manualmente", aquí hay una forma (basada en las otras respuestas aquí):
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"});
}
Ver mi comentario https://.com/a/17732609/1340178
Tuve el mismo problema y este fue mi enfoque:
- Crea el popup.html con el enlace (y los enlaces no funcionan cuando se hace clic mientras Chrome los bloquea).
- Cree popup.js y vincule en la página:
<script src="popup.js" ></script>
Agregue el siguiente código a 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}); }; })(); } });
Eso es todo, los enlaces deberían funcionar después de eso.