Avviso JavaScript non funzionante in Firefox 6

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:

  • puoi effettivamente salvare il bookmarklet (pulsante),
  • puoi avere una bella icona (crea qualche immagine, ad esempio file PNG, importala e base64_encode nella finestra di dialogo del nuovo pulsante).

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 …”.