Mi bookmarklet consiste en una llamada a un script 'launcher' que se inserta en body
. A medida que se ejecuta, inserta de manera similar más scripts (jQuery, la aplicación real) y un CSS.¿Cómo hacer que un bookmarklet se ejecute solo una vez?
bookmarklet
javascript:(function(){
var l = document.createElement('script');
l.setAttribute('type','text/javascript');
l.setAttribute('src','launcher.js');
document.body.appendChild(l);
})();
Launcher.js
var s = document.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src','my actual script');
document.body.appendChild(s);
// I repeat a block like this once per script/css.
El problema es que si se hace clic en el bookmarklet dos veces, todos los guiones se insertan de nuevo. ¿Cómo puedo prevenir este comportamiento?
¡Uy! - editado para corregir la sintaxis wonky y colocar el bloque if desde la función anon en lugar de sin sentido alrededor de ella. –
Perfecto: mis intentos anteriores fueron ciertamente en esta línea, pero estaba usando variables en lugar de accesorios de ventana, que no sabía nada. ¡Gracias! – vemv
@vemv Una variable declarada dentro de una función como 'yourVar = 1234;' sin la palabra clave 'var' frente a ella se convierte de hecho en una propiedad del objeto' window' global, pero este método es mucho más explícito y deliberado. –