Newsgroup: it.comp.lang.javascript
Titolo: leggere la variabile di un altro script

Supponete abbia uno script qualsiasi, per esempio questo:
var k;
k="unacosaqualunque";
alert(k);
Chiedo:
1) è possibile leggere da un altro script il valore assegnato alla 
variabile k?
2) la risposta precedente cambia se il primo script è un bookmarklet? 
cioè, è possibile leggere da un qualunque script attivo nella pagina il 
valore assegnato a una delle variabili di un altro script eseguito come 
bookmarklet?
Grazie anticipate.

 bookmarklet?
Non vedo perché no (ho dovuto andare a cercarmi cosa fossero questi 
bookmarklet, è semplice javascript richiamato con lo pseudoprotocollo 
javascript:, e non ne capisco l'utilità, ma qua siamo OT). Sempre che la 
var sia globale, ovviamente.

 javascript:, e non ne capisco l'utilità, ma qua siamo OT).
Qualche utilità ci può essere anche se io li ho sempre bellamente ignorati.
Mio caso personale: l'unico che uso da tempo è Readability 
(
https://www.readability.com/bookmarklets/
), e continuo a usare il 
bookmarklet nonostante abbiano fatto l'estensione per Firefox.
Qualche tempo fa Safari ha aggiunto una funzione che fa più o meno la 
stessa cosa ma non in ogni dove. Mai indagato il perché visto che gli 
altri browser li uso solo per test.

[... a proposito di bookmarklet ...]
Aggiungo che mi ero segnato pure questo:
http://www.volkside.com/tools/wirify/
Carino, anche se non mi risulta utile.
Appuntato giusto per studiare l'approccio.

 2) la risposta precedente cambia se il primo script è un bookmarklet?
Finché il primo script - eseguito come una bookmarklet o meno - imposta
le variabili nel global scope, nessun problema. Piccolo esempio:
<script type="text/javascript">
	var k = 0;
	var obj = (function(){
		return {
			getK : function() { return k },
			incK : function() { k++ }
		}
	})();
</script>
<script type="text/javascript">
	alert(typeof k); // number
 
	alert(obj.getK()) // 0
	obj.incK();
	alert(obj.getK()) // 1
	k = 12;
	alert(obj.getK()) // 12
</script>
Ma se lo scope cambia, non puoi. E questo a prescindere che sia una
bookmarklet o un altro script:
<script type="text/javascript">
	var obj = (function(){
		var k = 0;
		return {
			getK : function() { return k },
			incK : function() { k++ }
		}
	})();
</script>
<script type="text/javascript">
	alert(typeof k); // undefined
 
	alert(obj.getK()) // 0
	obj.incK();
	alert(obj.getK()) // 1
	k = 12;
	alert(obj.getK()) // 1
</script>
Ma se il primo script fosse:
<script type="text/javascript">
	(function(){
		var k = 0;
		k++;
	})();
</script>
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 var sia globale, ovviamente.
Suvvia! In questo NG se ne parla almeno dal 2001 se non prima, ricordo i
tempi della vecchissima guardia.. Comunque sono molto utili, un modo
semplice - seppur in certi versi limitato - per avere addons
cross-browser e cross-platform.
Pensa a Firebug per esempio. Esiste la versione "Lite" che ti permette
di averlo anche su IE6, sotto forma di bookmarklet.
Senza dimenticare readability appunto, presenza fissa sul mio iPad. :)


 </script>
Ecco, qui mi sono perso. Ma se il primo script fosse... allora?
Sui bookmarklet non posso che ribadire il tuo giudizio. Aggiungo che io 
ne uso diversi per non appesantire di troppe estensioni il mio FF.
Oltre a readability, uno che uso regolarmente ï¿œ toread.cc.
Un altro per ovviare alla mia barra di stato spaventosamente affollata ï¿œ 
showlinks.

 Ecco, qui mi sono perso. Ma se il primo script fosse... allora?
Thunderbird che ha fatto casino, era un refuso del draft.
