Ho provato a eseguire questo codice JavaScript nella barra degli indirizzi in Firefox 6:
javascript:alert("Hello")
Ottengo un
ReferenceError: avviso non definito.
Funzionava benissimo in Firefox 5 e funziona ancora su Opera, Safari e Chrome. Come posso risolvere questo?
Sembra che usando javascript:
e data:
URL (direttamente nella barra degli indirizzi) non siano attualmente consentiti come da questo commento :
A proposito, sto probabilmente andando a dividere questo bug in correzioni multiple, a breve e lungo termine.
A breve termine: disabilita incollare javascript: URL nella barra degli URL
Più a lungo termine: richiede inoltre che i bookmarklet siano “autorizzati” nella Gestione segnalibri prima che possa eseguire JavaScript
E questo è il “bug” che è stato risolto nell’ultima versione . L’ ultimo commento afferma inoltre:
javascript: in realtà non viene ignorato – vengono eseguiti, ma in un contesto “vuoto” che non ha nessuno dei soliti metodi DOM che ci si aspetterebbe, quindi gli usi più comuni (ad es. javascript: alert (1)) vengono semplicemente lanciati ( e quindi vengono effettivamente ignorati). javascript: 1 + 1 funziona bene, però.
Adesso:
Come posso risolvere questo?
Non puoi, devi aspettare finché non decidono per una soluzione adeguata. Come diceva il commento, i bookmarklet funzioneranno, ma devono essere esplicitamente consentiti. Se vuoi solo testare il codice, usa Firebug o la nuova funzione Scratchpad .
La risposta di Felix indica correttamente perché javascript:
nella barra degli URL non funziona più.
La sostituzione per questo, se si sta tentando di eseguire il debug della pagina Web, è la console Web (da non confondere con la console degli errori). Nel menu compatto, è sotto lo sviluppatore Web; nella barra dei menu completa, è sotto Strumenti. Oppure puoi premere ctrl-shift-K (cmd-shift-K su mac). La barra con un segno di maggiore è un prompt di JavaScript; il codice inserito verrà valutato nel contesto della pagina corrente. È ansible fare clic su qualsiasi punto nell’area sopra quella barra sottolineato per visualizzare una finestra dell’ispettore.
Se il tuo bookmarklet cliccabile è rotto e lo vuoi indietro, puoi creare un pulsante cliccabile usando l’estensione per Firefox dei pulsanti personalizzati .
I vantaggi del pulsante durante l’esecuzione da Scratchpad:
L’estensione è un po ‘speciale perché i pulsanti funzionano a livello di Chrome di Chrome , quindi sono un po’ più privilegiati (puoi interagire con l’API del browser), e non c’è una corrispondenza 1-a-1 tra il normale JS e il codice del pulsante ( ha bisogno di qualche ritouch ). Più precisamente, il document
e la window
visti dal pulsante non sono quelli che ti aspettavi.
Tuttavia, puoi assegnare la window
‘buona’ e il document
alle tue variabili, e poi lavorare su queste variabili (meglio non ridefinire la finestra;)
Ecco un codice di esempio che ho scritto che funziona piuttosto bene in Fx10:
// get proper 'window' and 'document' into our private variables var theWindow = window.top.getBrowser().selectedBrowser.contentWindow; var theDocument = theWindow.document; // here we go var input = theDocument.getElementById("foo"); input.focus(); // just to show you it's working, unnecessary in fact // simulate keyboard event var evt = theDocument.createEvent("KeyboardEvent"); evt.initKeyEvent ("keypress", true, true, theWindow , 0, 0, 0, 0, 0, 65); // 65 == "A" input.dispatchEvent(evt); // show alert after 2 sec theWindow.setTimeout( function(){ input.value += "B"; theWindow.alert(input.value); // alerts "AB" },2000);
Invece di usare direttamente le funzioni globali (come setTimeout
o alert
), devi mettere la theWindow.
prima di loro, e sostituire document
/ window
con local theDocument
/ theWindow
e sembra funzionare. Non l’ho ancora testato a fondo con casi molto complicati.
Per aggiungere un pulsante, fai clic con il pulsante destro del mouse su qualsiasi pulsante che hai già e scegli “Aggiungi nuovo pulsante …”.