javascript - title js
Cómo inyectar jquery a cualquier página web (3)
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna manera de inyectar jQuery en cualquier página como lo hacemos con javascript (desde url). con javascript hacemos esto
javascript:alert("b");
Intenté esto, pero no sé por qué no funciona
javascript:var x = document.getElementsByTagName("head")[0];
var y = document.createElement("script");
y.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js";
x.appendChild(y);
var a = document.getElementsByTagName("body")[0];
var b = document.createElement("script");
b.innerHTML = "$(''p'').css(''border'',''3px solid red'')"
a.appendChild(b);
Dado que está cargando jQuery de forma asíncrona, la variable jQuery
no está disponible de inmediato. Esto significa que no puede usar jQuery en la siguiente línea; debe esperar hasta que el navegador cargue jQuery y lo ejecute.
La solución es utilizar una de las siguientes técnicas:
- usar retraso (asuma que el script se carga después de x segundos)
- use polling (marque
typeof jQuery === "function"
cada x milisegundos) - use el parámetro de devolución de llamada (agregue una cadena de consulta como
?callback=scriptloaded
, requiere soporte del lado del servidor) - use el evento
onload
del elemento del script como se describe a continuación
function injectScriptAndUse() {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js";
script.onload = function() {
$("p").css("border", "3px solid red");
};
head.appendChild(script);
}
<p>Paragraph</p>
<button onclick="injectScriptAndUse();">Click to load jQuery and change style of the paragraph</button>
Este es un código de bookmarklet para inyectar jquery en cualquier página web:
javascript:(function() {
function l(u, i) {
var d = document;
if (!d.getElementById(i)) {
var s = d.createElement(''script'');
s.src = u;
s.id = i;
d.body.appendChild(s);
}
}
l(''//code.jquery.com/jquery-3.2.1.min.js'', ''jquery'')
})();
Actualización: eliminé la parte http: part de la URL por @Monkpit comentario, lo cual es muy importante y ahorra muchos problemas.
Olvidó un punto y coma en la fila 8. Este es el código sin errores:
javascript:var x = document.getElementsByTagName("head")[0];
var y = document.createElement("script");
y.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js";
x.appendChild(y);
var a = document.getElementsByTagName("body")[0];
var b = document.createElement("script");
b.innerHTML = "$(''p'').css(''border'',''3px solid red'')";
a.appendChild(b);
Puedes inyectar jQuery en Chrome poniéndolo como un marcador. Simplemente copie el código de arriba, cree un nuevo marcador de un sitio web aleatorio. Haga clic derecho en el marcador y elija ''Editar'', pegue el código en el cuadro de URL y elija ''Guardar''. Al hacer clic en el marcador, se inyectará el script jQuery.
-Lucas