Como algunos de ustedes saben, Google Chrome ha puesto algunas limitaciones severas en los scripts de Greasemonkey.
El cromo no soporta
@require
,@resource
,unsafeWindow
,GM_registerMenuCommand
,GM_setValue
, oGM_getValue
.
Sin requerir, no puedo encontrar una manera de incluir la biblioteca jQuery en el script Greasemonkey en Google Chrome.
¿Alguien tiene algún consejo en este asunto?
@require
ahora, que es un enfoque mucho más simple que los de las respuestas.var $ = unsafeWindow.jQuery;
@require
funciona muy bien en sitios donde no le preocupa entrar en conflicto con ninguna de las miles o millones de otras bibliotecas JS que se unen a $ al cargar. Sin embargo, si usted está escribiendo un guión para un sitio con $ para otra cosa, o peor aún escribir una secuencia de comandos para ejecutar en cada sitio cada vez, utilizar el mecanismo de carga relativamente seguro explica por tghw a continuación.Respuestas:
De "Consejo de usuario: Uso de jQuery - Blog de Erik Vold"
fuente
script.textContent = "(" + callback.toString() + ")();";
quescript.textContent = "jQuery.noConflict();(" + callback.toString() + ")();";
en mi propia plantilla de scripts de usuario por lo que no habrá ningún conflicto sorprendentes. :)main()
, puede usar$.loadScript()
, y luego ejecutar todo lo demás cuando loadScript termine de cargar jQueryUI.main
se ejecutará en el contexto de la página de destino, lo que significa que (entre otras cosas) se aplica la política de solicitud de sitios cruzados de la página de destino (por ejemplo, tuve que reinyectarGM_xmlhttpRequest
antes de ver que sí lo hizo) no me ayudes) Al final, simplemente copio y pego el código dejquery.min.js
.He escrito algunas funciones basadas en el script de Erik Vold para ayudarme a ejecutar funciones de ejecución, código y otros scripts en un documento. Puede usarlos para cargar jQuery en la página y luego ejecutar código bajo el
window
alcance global .Ejemplo de uso
Puede hacer clic aquí para instalarlo, si confía en que no estoy tratando de engañarlo para que instale algo malicioso y que nadie haya editado mi publicación para señalar otra cosa. Vuelva a cargar la página y debería ver un borde alrededor de mi publicación.
Las funciones
load(url, onLoad, onError)
Carga el script
url
en el documento. Opcionalmente, se pueden proporcionar devoluciones de llamada paraonLoad
yonError
.execute(functionOrCode)
Inserta una función o cadena de código en el documento y lo ejecuta. Las funciones se convierten en código fuente antes de insertarse, por lo que pierden su alcance / cierre actual y se ejecutan debajo del
window
alcance global .loadAndExecute(url, functionOrCode)
Un atajo; Esto carga un script
url
, luego lo inserta y ejecutafunctionOrCode
si tiene éxito.Código
fuente
Utilice jQuery sin temor a conflictos , llamando
jQuery.noConflict(true)
. Al igual que:Pero, para los scripts entre navegadores, ¿por qué no aprovechar una copia local agradable y rápida de jQuery, cuando puede?
Lo siguiente funciona como un script de usuario de Chrome y un script de Greasemonkey, y utiliza la buena
@require
copia local de jQuery, si la plataforma lo admite.fuente
$ = unsafeWindow.jQuery
si la página tiene jQuery (solo he probado esto en Tampermonkey).Si la página ya tiene jQuery, simplemente siga esta plantilla:
fuente
if
declaración que verifica elwindow.location
.La manera simple es usar la
required
palabra clave:fuente
Hay una manera realmente fácil de moverse, incluida una copia completa de jQuery para los scripts de Chrome cuando esos scripts en realidad no usan ninguna característica privilegiada ( funciones GM_ *, etc.) ...
¡Simplemente inserta el script en la página DOM y ejecuta! La mejor parte es que esta técnica funciona igual de bien en Firefox + Greasemonkey, por lo que puede usar el mismo script para ambos:
(sin robo robado de Shog9 en meta.stackoverflow ya que no lo movió aquí, y tengo que eliminar la meta publicación ..)
fuente
Además, puede empaquetar su script con la extensión jQuery to Chrome. Consulte las secuencias de comandos de contenido de Google Chrome .
Las extensiones de Chrome, a diferencia de los scripts de Greasemonkey, pueden actualizarse automáticamente.
fuente
Solución más fácil: corte y pegue el contenido de jquery.min.js en la parte superior de su script de usuario. Hecho.
Encontré varios problemas con las respuestas recomendadas. La solución addJQuery () funciona en la mayoría de las páginas pero tiene errores en muchas. Si tiene problemas, simplemente copie y pegue el contenido de jquery en su script.
fuente
Me pregunto si no podrías confiar
document.defaultView.jQuery
en tu script GM:fuente
Otro enfoque sería modificar su script para cargar jQuery manualmente. Ejemplo de http://joanpiedra.com/jquery/greasemonkey/ :
EDITAR: DRATS! Después de probar, parece que este código no funciona, ya que Google Chrome ejecuta scripts / extensiones de usuario en un ámbito / proceso separado de la página web real. Puede descargar el código jQuery utilizando una XmlhttpRequest y luego evaluarlo, pero debe alojar el código en un servidor que permita el uso compartido de recursos de origen cruzado utilizando el
Access-Control-Allow-Origin: *
encabezado. Lamentablemente, NINGUNO de los CDN actuales con jQuery admite esto.fuente
Extensión perfecta para incrustar jQuery en Chrome Console tan simple como puedas imaginar. Esta extensión también indoca si jQuery ya se ha incrustado en la página.
Esta extensión solía incrustar jQuery en cualquier página que desee. Permite usar jQuery en el shell de la consola (puede invocar la consola de Chrome con "Ctrl + Shift + j").
Para incrustar jQuery en la pestaña seleccionada, haga clic en el botón de extensión.
ENLACE a la extensión: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc
fuente