Si crea un script de Greasemonkey con @include *
y va a un sitio como youtube, ejecuta el script más de 20 veces cada vez que actualice. Esto está en Firefox, no estoy seguro acerca de Chrome.
¿Hay alguna manera de evitar esto?¿Ejecutar un script de Greasemonkey solo una vez por carga de página?
Respuesta
En primer lugar, probablemente no desee que la secuencia de comandos se ejecute en iFrames.
Puede bloquear que el uso de the @noframes
directive que ahora trabaja en tanto Greasemonkey y Tampermonkey a partir de octubre de 2014.
Para versiones anteriores, o para los motores de secuencias de comandos que no son compatibles @noframes
, puede utilizar este código, justo después de la bloque de metadatos:
if (window.top != window.self) //don't run on frames or iframes
{
//Optional: GM_log ('In frame');
return;
}
en segundo lugar, se puede esperar y disparar su código de GM, una vez que, al cargar la página. Envolver todo en un main()
y lo llaman en el caso load
, así:
window.addEventListener ("load", LocalMain, false);
function LocalMain() {
// Your code goes here.
}
En tercer lugar, puede excluir sitios o páginas añadiendo // @exclude
directivas al bloque de metadatos.
En general, es mejor evitar scripts GM universalmente incluidos, si es posible.
Otros métodos pueden establecer indicadores o volver a cargar la página con parámetros de URL. Estos se vuelven complicados, así que guárdalos como último recurso.
Puede, por ejemplo, almacenar la ubicación dada en una variable persistente. En la carga de la página, debe verificar si la ubicación actual ya está almacenada en esta variable.
Si no, establece la variable y ejecuta su función, si es así, no haga nada.
Cómo almacenar las variables persistentes: GM_setValue
- 1. ¿Por qué mi función solo se ejecuta una vez por carga de página?
- 2. El script de Greasemonkey solo se ejecuta cuando se carga la página
- 3. Ejecutar un script PHP una vez por minuto
- 4. carga show_ads.js una vez
- 5. cómo ejecutar el script greasemonkey antes de que se muestre el contenido de la página?
- 6. ejecutar script php solo por cron
- 7. Cómo probar un script de Greasemonkey, especialmente en una copia local de una página web?
- 8. compatibilidad script de Greasemonkey con Firefox, Safari, Opera y Chrome (proceso de carga)
- 9. Ejecuta la animación de CSS3 solo una vez (en la carga de la página)
- 10. Ejecutar un script de powershell en el fondo una vez por minuto
- 11. Greasemonkey Version Script constante
- 12. Script Fire Greasemonkey en la solicitud AJAX
- 13. Cómo determinar por qué un script de Greasemonkey no se está ejecutando
- 14. ¿Cómo puedo ejecutar un script de usuario antes de que se ejecuten scripts en línea en una página web?
- 15. Solo tengo que ejecutar el código de extensión de Firefox una vez por sesión
- 16. Ejecute el script de Greasemonkey en la misma página, varias veces?
- 17. En XSLT, puedo ejecutar una plantilla solo una vez
- 18. jQuery - Haz solo una vez
- 19. funciones Inyectar JS en la página de un script de Greasemonkey en Chrome
- 20. ¿Cómo accedo a una variable de JavaScript de nivel de página (local) en un script de greasemonkey?
- 21. Rendimiento solo una vez por iteración
- 22. ¿Por qué solo se agrega una vez?
- 23. ¿Cómo puedo redireccionar una página con javascript en Greasemonkey?
- 24. ¿Cómo publico un script de Greasemonkey como complemento de Firefox?
- 25. Llamar a una función solo una vez
- 26. Reemplazar la versión de jQuery de una página con Greasemonkey
- 27. Obteniendo un forech para ejecutar una vez
- 28. ¿Cómo puedo interceptar XMLHttpRequests desde un script de Greasemonkey?
- 29. ¿Se puede llamar a ServletFileUpload.parseRequest() solo una vez por solicitud?
- 30. Cómo ejecutar el script de Python en la página web
acaba de comprobar youtube, había mucha menos iframes. mi sugerencia es 'GM_log (location.href)' y narrow @include. –
Esto resolvió mi problema. ¡Gracias! – Joren
@Joren: De nada. Encantado de ayudar. –