jquery greasemonkey

¿Cómo puedo usar jQuery en Greasemonkey?



(10)

Es posible que el Component unavailable esté Component unavailable si importa la secuencia de comandos jQuery directamente.

Tal vez sea de lo que hablaba @Conley ...

Puedes usar

@require http://userscripts.org/scripts/source/85365.user.js

que es una versión modificada para funcionar en Greasemonkey y luego obtener el objeto jQuery

var $ = unsafeWindow.jQuery; $("div").css("display", "none");

Intenté poner esta línea pero no funciona:

// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js

jQuery no funciona en Greasemonkey en absoluto. ¿Hay otra manera de usar jQuery en Greasemonkey?

-

Para todas las personas que tienen el mismo problema, debe cargar el archivo en greasespot y luego instalarlo desde allí.

¡La opción Crear Nuevo Script no funcionaría!


La solución de Rob es la correcta: use @require con la biblioteca jQuery y asegúrese de volver a instalar su script para que se procese la directiva.

Una cosa que creo que vale la pena agregar es que puedes usar jQuery normalmente una vez que lo hayas incluido en tu script, excepto los métodos AJAX . Por defecto, jQuery busca XMLHttpRequest, que no existe en el contexto de Greasemonkey. Escribí sobre una solución alternativa en la que creas un contenedor para GM_xmlhttpRequest (la versión de Greasemonkey de XHR) y utilizas ajaxSetup() jQuery''s para especificar tu versión ajaxSetup() como predeterminada. Una vez que haga esto, puede usar $.get y $.post como de costumbre.

También puede tener problemas con $.getJSON jQuery porque carga JSONP utilizando etiquetas <script> . Esto conduce a errores porque jQuery define la función de devolución de llamada en el alcance de la ventana de Greasemonkey, y los scripts cargados buscan la devolución de llamada en el alcance de la ventana principal. Su mejor apuesta es usar $.get en $.get lugar y analizar el resultado con JSON.parse() .


No hay absolutamente nada de malo en incluir la totalidad de jQuery en tu script de Greasemonkey. Simplemente tome la fuente y colóquela en la parte superior de su script de usuario. ¡No es necesario crear una etiqueta de script, ya que ya estás ejecutando JavaScript!

El usuario solo descarga el script una vez de todos modos, por lo que el tamaño del script no es una gran preocupación. Además, si alguna vez desea que su script Greasemonkey funcione en entornos que no sean GM (como los scripts de usuario de GM, o Greasekit en Safari), ayudará a no usar construcciones únicas de GM como @require.


Puede crear una nueva secuencia de comandos utilizando la Nueva secuencia de comandos de usuario en Greasemonkey pero debe editar el archivo config.xml dentro de la carpeta gm_scripts.

Su archivo config.xml debería tener una sintaxis similar a esta:

<Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test"> <Include>http://*</Include> <Require filename="jquery.js"/> </Script>

Observe la etiqueta <Require> .

En tu script puedes usar la sintaxis directa de jQuery. Asegúrate de tener la etiqueta require en el encabezado de Greasemonkey. Aquí hay un ejemplo de Hello World:

// ==UserScript== // @name Test jQuery // @namespace http://www.example.com/jQueryPlay/ // @description Just a test // @include http://* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js // ==/UserScript== $(document).ready(function() { alert("Hello world!"); });

Recuerde que después de modificar el archivo config.xml , debe reiniciar su navegador para que Greasemonkey vuelva a cargar la configuración.

También tenga en cuenta que necesita copiar el archivo jquery.js a su carpeta de directorio de script para que esto funcione. Probé esto, y solo funciona si realmente copia el archivo manualmente allí.

Feliz jQuerying!


Quizás no tienes una versión suficientemente reciente de Greasemonkey. Fue la versión 0.8 la que agregó @require .

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js

Si no tiene 0.8, use la técnica que describe Joan Piedra para agregar manualmente un elemento de script a la página .

Entre las versiones 0.8 y 0.9, @require solo se procesa cuando el script se instala por primera vez. Si cambia la lista de scripts requeridos, necesita desinstalar su script y reinstalarlo; Greasemonkey descarga la secuencia de comandos requerida una vez en la instalación y luego usa una copia en caché.

A partir del 0.9, el comportamiento de Greasemonkey ha cambiado (para abordar un problema relacionado tangencialmente ) de modo que ahora carga los scripts requeridos después de cada edición; ya no es necesario volver a instalar el script.


Si desea utilizar jQuery en un sitio donde ya está incluido, este es el camino a seguir (inspirado por BrunoLM):

var $ = unsafeWindow.jQuery;

Sé que esta no fue la intención original de la pregunta, pero se está convirtiendo cada vez más en un caso común y usted no excluyó explícitamente este caso. ;)




@require NO solo se procesa cuando el script se instala por primera vez! En mis observaciones se procesa en la primera ejecución! Así que puedes instalar un script a través del comando de Greasemonkey para crear un script nuevo. Lo único que debe tener en cuenta es que no se activa la recarga de la página, antes de agregar la parte @require . (y guardar el nuevo script ...)


Actualización : Como dice el comentario a continuación, esta respuesta es obsoleta.

Como todos los demás han dicho, @require solo se ejecuta cuando el script se ha instalado. Sin embargo, también debe tener en cuenta que actualmente jQuery 1.4. * No funciona con greasemonkey. Puede ver aquí para obtener más información: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error

Tendrás que usar jQuery 1.3.2 hasta que las cosas cambien.