2010-11-16 8 views

Respuesta

35

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.

+1

acaba de comprobar youtube, había mucha menos iframes. mi sugerencia es 'GM_log (location.href)' y narrow @include. –

+1

Esto resolvió mi problema. ¡Gracias! – Joren

+2

@Joren: De nada. Encantado de ayudar. –

0

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

Cuestiones relacionadas