Autore Topic: avviare script da pulsante  (Letto 3053 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline miky92

  • Post: 9
avviare script da pulsante
« il: 17 Febbraio 2012 11:27:10 »
Ciao a tutti! Mi sono appena iscritto...e sono alle prime armi, stavo provando a stendere qualche script semplice semplice...
ho scaricato greesmonkey e va molto bene, però gli script sono in esecuzione perenne...
avrei quindi qualche domanda, per riuscire a fare ciò che voglio

1. c'è un modo per assegnare l'esecuzione ad un pulsante? avevo provato a creare un segnalibro e assegnargli l'indirizzo locale del file .js, ma me lo apre come editor...
c'è qualche "parola chiave" per dirgli "esegui quello che ti metto" al segnalibro?
o in che altro modo posso crearmi un pulsante per eseguire i miei script...

2. c'è il modo di dichiarare una variabile "globale" diciamo, istanziata all'avvio di firefox e visibile da tutti gli script in esecuzione,diciamo?
in tal modo potrei stendere tutto il codice in uno script su greesmonkey, con dei controlli su queste variabili "check" (true\false) con le quali so se eseguire o meno
quella parte di codice...sarebbe comodissimo, così tengo solo uno script principare e altri piccoli assegnati a dei tasti per cambiare il valore di queste variabili,e quindi scegliere al volo cosa tenere attivo

3. c'è una qualche gestione delle shorcut? si può fare uno script che lo faccia?
assegnare script ad un comando rapido da tastiera ad esempio



ho provato a cercare un pò su google, qui, ma non ho trovato molta roba... più che altro si parla sempre di script già fatti, mai di programmazione in prima persona...
ma li scriverà ben qualcuno tutti sti script! :D

edit: spero di aver beccato la sezione giusta
« Ultima modifica: 17 Febbraio 2012 11:38:21 da miky92 »

Offline gialloporpora

  • サンドロ
  • Moderatore
  • Post: 10806
    • Il blog che non c'è
Re: avviare script da pulsante
« Risposta #1 il: 17 Febbraio 2012 11:44:24 »
Citazione
3. c'è una qualche gestione delle shorcut? si può fare uno script che lo faccia?
assegnare script ad un comando rapido da tastiera ad esempio

Non credo con GM, questo è quello che fa, devi forzarla, keyconfig.
Con keyconfig puoi eseguire codice a livello chrome quindi puoi anche usare le variabili globali che salvi nel prefs.js (about:config).

https://developer.mozilla.org/en/Code_snippets/Preferences

Offline miky92

  • Post: 9
Re: avviare script da pulsante
« Risposta #2 il: 17 Febbraio 2012 12:14:25 »
hmm interessante!

era quello che cercavo,
allora mi rimangono un altro paio di cose da chiarire...
posso associare un file .js alla shotcur invece che scrivere il codice lì dentro?
posso creare un tasto che esegue quella shortcut?

e altra cosa... c'è una sorta di "debugger" per gli script? vedere in tempo reale le istruzioni che vengono eseguite...
grazie mille intanto :)

Offline Iceberg

  • Moderatore
  • Post: 9093
Re: avviare script da pulsante
« Risposta #3 il: 17 Febbraio 2012 12:31:53 »
Credo che tutto ciò si possa fare con l'estensione PrefBar, dal codice, all'inizializzazione, al pulsante sull'interfaccia.

Ora vi riporto due righe in merito nella relativa discussione.

La discussione è questa:
http://forum.mozillaitalia.org/index.php?topic=53937.0

il punto al quale mi riferisco lo trovate nell'appendice 7.

Le mie conoscenze si fermano con ciò che ho scritto lì, ma se voi sapete programmare nello spazio onClick potete scriverci il vostro codice (e se necessario usare anche lo spazio InitFunction).

onClick: this is the code that is executed when someone clicks the button. The built in buttons have built in functions and therefore have very short onclick values. If you add your own buttons, you can use the multiline code editor to add multiline code with comments.

« Ultima modifica: 17 Febbraio 2012 12:46:40 da Iceberg »

Offline gialloporpora

  • サンドロ
  • Moderatore
  • Post: 10806
    • Il blog che non c'è
Re: avviare script da pulsante
« Risposta #4 il: 17 Febbraio 2012 12:57:45 »
Mi sa che ha ragione @Iceberg,
io quell'estensione, prima del suo post, non la conoscevo, diciamo che keyconfig non ti permette di usare dei file JS.

Questo lo puoi fare con quest'altra:
http://userchromejs.mozdev.org/

Non è difficile aggiungere degli shortcut, ti faccio vedere la differenza dello script di una funzione su keyconfig e via userChrome.js:


http://pastebin.com/JKXEcw11
http://pastebin.com/G1rweA6j
Per l'import usa:
Codice: [Seleziona]
userChrome.import("d:\\userChromeJS\\firefox\\pin-unpin-key.js");

però forse se usi prefsbar ti risparmi del lavoro.
Io ho molti script in eseguzione con userChromeJS e devo trovare la voglia di passarli a PrefsBar.

Per il debugger, a me basta la console, però forse con Firebug hai qualcosa in più.

Offline Iceberg

  • Moderatore
  • Post: 9093
Re: avviare script da pulsante
« Risposta #5 il: 17 Febbraio 2012 13:07:41 »
Non so scrivere codice che vada oltre le due righe.

Per invitarvi a fare delle prove con PrefBar vi ricordo che non dovrete preoccuparvi della creazione del pulsante e che vi offre anche la possibilità di avere una scorciatoia da tastiera specifica per la funzione che creerete.

Offline miky92

  • Post: 9
Re: avviare script da pulsante
« Risposta #6 il: 17 Febbraio 2012 13:13:22 »
hmm...belle cose, tanto materiale...! grazie mille, ora non mi rimane che smanettare un pò  :lol:

...tanto fra poco (al prossimo intoppo) sarò comunque qui ghgh


Edit: anzi, ultima cosa! per accedere (leggere\scrivere) su una variabile globale dal mio script js come faccio?
a mettere solo il nome non me la trova
« Ultima modifica: 17 Febbraio 2012 13:15:40 da miky92 »

Offline gialloporpora

  • サンドロ
  • Moderatore
  • Post: 10806
    • Il blog che non c'è
Re: avviare script da pulsante
« Risposta #7 il: 17 Febbraio 2012 13:48:36 »
Citazione
Edit: anzi, ultima cosa! per accedere (leggere\scrivere) su una variabile globale dal mio script js come faccio?
a mettere solo il nome non me la trova

Guarda il link a MDN del mio primo messaggio:

Codice: [Seleziona]
Here are two examples:

// Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefBranch);

// Get the "extensions.myext." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.myext.");

Simple types

There are three types of preferences: string, integer and boolean. Each entry in the preferences database (prefs.js) has one of those types. There are six methods in nsIPrefBranch that read and write preferences: getBoolPref(), setBoolPref(), getCharPref(), setCharPref(), getIntPref() and setIntPref(). Using them is as easy as:

// Get the "accessibility." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefService).getBranch("accessibility.");




Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: avviare script da pulsante
« Risposta #8 il: 17 Febbraio 2012 15:42:57 »
Alla fin fine,non ho capito benissimo cosa vuoi fare, però secondo me ti servirebbe di scrivere un'estensione.
Riguardo le variabili, dipende da dove le dichiari.

Offline miky92

  • Post: 9
Re: avviare script da pulsante
« Risposta #9 il: 17 Febbraio 2012 18:48:39 »
voglio automizzare alcune operazioni su pagine web e modificarle (nascondendo qualcosa)...
ho fatto lo script ma il problema è che a metterlo su GM me lo continua a ripetere...quindi volevo una variabile globale (che ho dichiarato manualmente in about:config) boleana da controllare, in modo da fare l'operazione solo una volta al caricamento della pagina...

comunque credo di aver capito, ora vedo un pò cosa salta fuori  :)

Offline miky92

  • Post: 9
Re: avviare script da pulsante
« Risposta #10 il: 17 Febbraio 2012 22:11:29 »
uff, sono ancora in alto mare :(

ho creato un nuovo pulsante sulla PrefBar a cui faccio eseguire uno script locale, e fin qui ok...
ma non funziona lo script, dovrebbe solo cliccare il tasto di una pagina web:
Codice: [Seleziona]
window.onload = function() {
try {        
        document.getElementById('f1').click();
    }
catch (e) {
alert(e.message);
}
}

ma mi da "oggetto window non trovato"...anche a lasciare solo la singola istruzione document.getElement...
mi da "document non trovato"...
ma l'oggetto window non dovrebbe esserci sempre e comunque? non è la finestra stessa del browser?

...soluzioni?
scusate se vi faccio perder tempo...

Offline gialloporpora

  • サンドロ
  • Moderatore
  • Post: 10806
    • Il blog che non c'è
Re: avviare script da pulsante
« Risposta #11 il: 17 Febbraio 2012 22:37:39 »
Dagli esempi, non l'ho mai usata:
http://prefbar.tuxfamily.org/buttons.html/category/site-specific
Codice: [Seleziona]
var win = window.content;
  var doc = win.document;
 
 

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: avviare script da pulsante
« Risposta #12 il: 18 Febbraio 2012 12:58:10 »
ma l'oggetto window non dovrebbe esserci sempre e comunque? non è la finestra stessa del browser?

Dipende da dove esegui il codice; se lo fai nell'ambiente di un'estensione, in gergo si dice dal "chrome", ci sono almeno due oggetti window: uno è quello dell'interfaccia del browser (accessibile tramite window), l'altro è quello della pagina web mostrata (accessibile tramite window.content oppure altri modi più complessi).

Offline miky92

  • Post: 9
Re: avviare script da pulsante
« Risposta #13 il: 18 Febbraio 2012 18:41:46 »
capito... non posso fare come volevo, perchè prefBarExecute esegue quello che gli passo ma indipendentemente da firefox...è come andare a cliccare due volte sul mio script, lo apre con il programma predefinito che nel mio caso era windows script host, e ovviamente non trovava ne l'oggetto window ne tantomento document.

Indi, torno sulla strada di GM... eseguo da li le istruzioni in funzione di variabili "check" dichiarate in about:config, come volevo fare all'inizio... ma ho ancora problemi con la lettura\scrittura di queste variabili :(

io ho fatto così:
(br.checkpreferiti è la variabile booleana in about:config) , f1 è l'id del bottone che dovrei cliccare nella pagina web associata allo script)
Codice: [Seleziona]
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefBranch);

window.onload = function() {
    try
    {
        if(pref.getBoolPref("br.checkpreferiti") == false)
        {
            document.getElementById('f1').click();
            pref.setBoolPref("br.checkpreferiti") = true;
        }       
    }
catch (e) {
alert(e.message);
}

}

ma nisba... non accade nulla ad aprire la pagina  :(

Offline Iceberg

  • Moderatore
  • Post: 9093
Re: avviare script da pulsante
« Risposta #14 il: 18 Febbraio 2012 20:27:40 »
prefBarExecute esegue programmi esterni a Firefox come hai visto, è una funzione già scritta

Dovresti proprio scrivere una nuova funzione.

Per capire meglio come fare, credo, che potrebbe essere utile studiarsi i pulsanti supplementari di prefBar. Quelli già presenti sono ottimizzati fra loro con rimandi fra l'uno e l'altro che se non sei chi ha scritto l'estensione finirai in un labirinto. Mentre i pulsanti supplementari dovrebbero permettere una vista più chiara di come operare.

Se per fare le prove hai usato l'elemento Button di prefBar, dai uno sguardo anche all'elemento Extcheck, che presenta tre parti anzichè due: Set-function, Get-function e Init-function.



0 Utenti e 1 Visitatore stanno visualizzando questo topic.