Newsgroup: it.comp.lang.javascript
Titolo: Puntatore sopra il testo

E' possibile verificare se il cursore del mouse si trova sopra un testo 
selezionato o in subordine se il puntatore ha la forma del selettore di 
testo?


Puoi spiegare un po' meglio la casistica?
 

ZER0 ha scritto quanto segue il 04/04/2013 17.32>

Ho un event on "mouseup" che scatta quando rilascio il click sopra un 
testo selezionato.
Succede per che seleziono il testo e allora clicco su un bottone in un 
altra parte della pagina; allora scatta l'evento ma vorrei evitarlo.

 altra parte della pagina; allora scatta l'evento ma vorrei evitarlo.
 
Meglio, ma non hai ancora spiegato la casistica. :) Sei sempre nella
parte implementativa. Qual è la casistica? Ad esempio: "voglio eseguire
una funzione quando l'utente seleziona del testo". Questa è una
casistica. Poi, in base all'implementazione, puoi avere problemi differenti.
Non sarebbe male inoltre specificare il contesto: il testo è selezionato
in una casella di testo, oppure è un testo qualunque del documento? È
una pagina web? Sei dentro un'estensione per qualche browser?
 
In base al contesto hai possibilità diverse.
 
Dunque, qual è la tua casistica?

 una pagina web? Sei dentro un'estensione per qualche browser?
qualunque testo, form o blocco, pagina web, addon ff.


> Dunque, qual è la tua casistica?
 
E aggiungerei, "nello specifico"? :)
 
 

> qualunque testo, form o blocco, pagina web, addon ff.
Non mi sembra che il "qualunque testo" debba intendersi come qualunque 
testo in assoluto ma in relazione all'essere un "qualunque testo" in un 
contesto testo di un form o blocco in una pagina web in un browser 
Firefox gestito da uno js in un addon.
O no? è sufficiente come "casistica"? :)

 in un browser Firefox gestito da uno js in un addon.
 
Okay, quindi non stiamo parlando di codice in una pagina web. Il tuo è
un codice che gira in un add-on di Firefox, e che deve ascoltare una
selezione che avviene in una pagina web, che sia in un campo di testo o
come blocco di testo, e reagire eseguendo una funzione nell'add-on
stesso. Ho capito bene il contesto?
 
In tal caso il mio suggerimento è di usare l'Add-on SDK, in particolare
il modulo `selection`:
 
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/selection.html
 
 
Questo perché, come ho già detto, in Firefox non ci è un metodo unico
per gestire la selezione: per la selezione in un campo di testo si fa in
un modo, per la selezione nella pagina si fa in un altro, e in piú ci
sono le multiselezioni, e tanti altri piccole cose da tenere di conto
(selezioni in iframe, selezioni vuote, etc). In pratica se vuoi scrivere
del codice per coprire tutte le casistiche, finiresti comunque per
reimplementare il codice del modulo `selection`.


Sarebbe la soluzione più mirata, ma se comprendo bene avrebbe 
l'inconveniente di appesantire con 2M di codice per non parlare del 
riferimento a pyton.
Se variassimo la casistica in addon per Firefox senza l'uso di "Add-on 
SDK" ma col più semplice
window.addEventListener("mouseup", evento, false);
?
Ho provato ad usare l'esempio così come riportato ed ottengo:
Error: ReferenceError: require is not defined.
Probabilmente vuole il pacco da 2M.

 Probabilmente vuole il pacco da 2M.
 
Il "pacco da 2M" è solo una developer dependencies. Ovvero ti serve per
sviluppare l'add-on, non per eseguirlo: non avrai né python né tutto
l'SDK nell'add-on una volta generato come XPI.
 


Ok, mi hai dato un'idea dei nuovi addon ff. Ne avevo avuto avuto un 
assaggio con gli addon startless, ma quello in specie ï¿½ molto grande e 
mi sgomenta l'idea di adattarlo alle nuove linee guide.
Quindi non si trova un modo per scatenare un evento su "mouseup" solo 
quando il mouse si trova sopra un testo selezionato escludendo l'SDK?

 quando il mouse si trova sopra un testo selezionato escludendo l'SDK?
 
Non che io sappia. Quel che puoi fare è appunto richiamare una funzione
dopo che una selezione è stata fatta. Puoi anche farlo senza l'Add-on
SDK, ma se vuoi coprire ogni casistica in pratica devi reimplementarti
lo stesso codice. Se invece la tua casistica è piú limitata, puoi
evitare certe cose, come ad esempio se è solo per i campi di testo.
 
Considera che, come ho già detto, in Firefox Beta potrai caricare dal
tuo add-on il modulo `selection` creandoti un loader, senza bisogno che
tutta l'estensione sia stata sviluppata con l'SDK:
 
http://www.oxymoronical.com/blog/2013/02/The-Add-on-SDK-is-now-in-Firefox
 
 
Comunque una volta che inizi a usare l'SDK, è difficile tornare
indietro. Con i moduli CommonJS è tutto piú semplice, inoltre le
estensioni sono restartless by default e possono girare su Firefox Mobile.

 
http://www.oxymoronical.com/blog/2013/02/The-Add-on-SDK-is-now-in-Firefox
 
 
ho provato:
var { Loader } = Components.utils.import("
...
var require = Loader.Require(loader, module);
 
e poi:
 
var selection = require("sdk/selection");
selection.on('select', alfa.show);
 
ma non funziona e nella console mi compare:
 
Timestamp: 04/04/2013 22.09.29
Error: Error
Source File: undefined
Line: 0
 
che significa?

 che significa?
 
ï¿½ ancora in fase sperimentale, penso che l'uso dei moduli dell'SDK al di
fuori dell'SDK verrï¿½ fixato per Firefox 23.


Quindi ancora non è garantito che funzioni?

 Quindi ancora non è garantito che funzioni?
 
L'esempio in questione è garantito che funzioni. L'uso del modulo di
`selection` no.

 L'hai provato da scratchpad, come dice l'esempio?
 
Exception: Permission denied to access property 'utils'
@Scratchpad/1:10
*/
 
forse vuole una nightly.

 */
 
Stai eseguendo scratchpad con i chrome privileges? Di default lavora
nella content window.

ZER0 ha scritto quanto segue il 05/04/2013 21.14>

stavolta si e funziona.
l' sdk/selection ancora no
 
è normale che
devtools.chrome.enabled
si setta a false ad ogni riavvio?

 si setta a false ad ogni riavvio?
questo era un problema mio.

 l' sdk/selection ancora no
 
Quello come ti ho detto non è ancora garantito che funzioni. È probabile
che ti dia un qualche altro errore.