PDA

View Full Version : [javascript] eseguire .js


d@vid
22-05-2010, 18:01
premessa: Ragazzi non spaventatevi per il post lungo!! Dovete solo farmi capire come devo fare per inserire all'interno di una pagina html il riferimento ad un .js preesistente, tutto qui. Grazie a chi vorrà aiutarmi:)

Salve
In seguito all'installazione di un plug-in ho dovuto riavviare Firefox, e non mi è stato possibile usare il ripristino di sessione (la finestra Oops... questo è imbarazzante mi è apparsa priva di schede)

Ho trovato il file sessionstore.js (è aggiornato all'ora che mi aspettavo, e non vuoto) che dovrebbe contenere le schede aperte prima del riavvio, e volevo tentare di recuperarne le url. Solo che non so come estrarlo. (a me si trova in C:\Users\NOMEUTENTE\AppData\Roaming\Mozilla\Firefox\Profiles\IDNUMERICO.default)

Allora, la procedura l'ho trovata, ed è indicata qui (http://blog.rot13.org/2009/02/restore_firefox_session_from_sessionstorejs.html), che riporto di seguito per semplicità:
Firefox stores session data (including back history!) in .mozilla/firefox/NUMERIC_ID.default/sessionstore.js and you can use html page generation javascript from ZeePrime@mozillaZine forums.
Il file da usare per l'estrazione è contenuto nel terzultimo post in questo forum (http://forums.mozillazine.org/viewtopic.php?t=622036), lo scrivo di seguito:
<html><head>
<style type="text/css">
a.selected, li.selectedtab { color: blue; font-weight: bold; }
li.closedtab { color: red; text-decoration: line-through; }
</style>
</head><body>
<ul id="windows">
<script type="text/javascript">
function dowindow(wind,wname,wclass) {
document.write("<li class=\"" + wclass + "\">");
document.write("<b>" + wname + "</b>");
document.write("<ol class=\"tabs\">");
var sel = wind["selected"];
var tabs = wind["tabs"];
for (var j = 0; j < tabs.length; j++) {
var tabclass = "tab"
if (j + 1 == sel) tabclass = "selectedtab"
dotab(tabs[j],"Tab #" + (j+1),tabclass);
}
var tablen = tabs.length;
tabs = wind["_closedTabs"];
for (var j = 0; j < tabs.length; j++) {
dotab(tabs[j]["state"],"Tab #" + (tablen + j + 1),"closedtab");
}
document.write("</ol>");
document.write("</li>");
}
function dotab(tab,tname,tclass) {
document.write("<li class=\"" + tclass + "\">");
document.write("<b>" + tname + "</b>");
document.write("<ul class=\"urls\">");
var sel = tab["index"];
var urls = tab["entries"];
for (var j = 0; j < urls.length; j++) {
var urlclass = "url"
if (j + 1 == sel) urlclass = "selectedurl"
dourl(urls[j],urlclass);
}
document.write("</ul>");
document.write("</li>");
}
function dourl(url,uclass) {
document.write("<li class=\"" + uclass + "\">");
var uname = url["title"];
if (!(uname) || uname == "") uname = url["url"];
document.write("<a href=\"" + url["url"] + "\">" + uname + "</a>");
document.write("</li>");
}
var data = <PUT CONTENTS OF sessionstore.js HERE!>;
var windows = data["windows"];
for (var i = 0; i < windows.length; i++) {
dowindow(windows[i],"Window #" + (i+1),"window");
}
</script>
</ul>
</body></html>

L'autore dice
Here's a "quick-and-dirty" approach to extracting info from your sessionstore.js file. Just replace the line "<PUT CONTENTS OF sessionstore.js HERE!>" with the contents of your sessionstore.js file and open this puppy in mozilla as a standard html file.

Un utente ha riscritto per maggior chiarezza il codice in questione in questo modo (lo ha indentato, e ha "cambiato nome alla riga da sostituire")
<html><head>
<style type="text/css">
a.selected, li.selectedtab { color: blue; font-weight: bold; }
li.closedtab { color: red; text-decoration: line-through; }
</style>
</head><body>
<ul id="windows">
<script type="text/javascript">
function dowindow(wind,wname,wclass) {
document.write("<li class=\"" + wclass + "\">");
document.write("<b>" + wname + "</b>");
document.write("<ol class=\"tabs\">");
var sel = wind["selected"];
var tabs = wind["tabs"];
for (var j = 0; j < tabs.length; j++) {
var tabclass = "tab"
if (j + 1 == sel) tabclass = "selectedtab"
dotab(tabs[j],"Tab #" + (j+1),tabclass);
}
var tablen = tabs.length;
tabs = wind["_closedTabs"];
for (var j = 0; j < tabs.length; j++) {
dotab(tabs[j]["state"],"Tab #" + (tablen + j + 1),"closedtab");
}
document.write("</ol>");
document.write("</li>");
}

function dotab(tab,tname,tclass) {
document.write("<li class=\"" + tclass + "\">");
document.write("<b>" + tname + "</b>");
document.write("<ul class=\"urls\">");
var sel = tab["index"];
var urls = tab["entries"];
for (var j = 0; j < urls.length; j++) {
var urlclass = "url"
if (j + 1 == sel) urlclass = "selectedurl"
dourl(urls[j],urlclass);
}
document.write("</ul>");
document.write("</li>");
}

function dourl(url,uclass) {
document.write("<li class=\"" + uclass + "\">");
var uname = url["title"];
if (!(uname) || uname == "") uname = url["url"];
document.write("<a href=\"" + url["url"] + "\">" + uname + "</a>");
document.write("</li>");
}

var data =
// insert .mozilla/firefox/*/sessionstore.js here !
;

var windows = data["windows"];
for (var i = 0; i < windows.length; i++) {
dowindow(windows[i],"Window #" + (i+1),"window");
}
</script>
</ul>
</body>
</html>


Ho capito che devo salvare questo codice (uno dei due) in un file html e lanciarlo con firefox, ma non ottengo risultati. Probabilmente perchè non gli passo il percorso giusto, in quanto non ho dimestichezza con queste cose...

Vi sarei estremamente grati se potesse aiutarmi
- qual è il percorso esatto (quello a partire da C: o da .mozilla, come sembra indicare il secondo file)?
- nel primo file (che è quello originale) si parla di passargli "il contenuto del sessionstore.js". Cos'è e come lo ottengo? Perchè il secondo file invece sembra indicare di immettere l'indirizzo del sessiostore.js (non del suo contenuto)?
- vanno usati / o\ nello scrivere il percorso?
(insomma, se potete fornirmi la riga così come la devo mettere per far funzionare il codice, indicandomi se devo andare a capo dopo l'"=" e prima del ";" come dice il secondo file insomma, oppure se come dice il primo l'istruzione di assegnazione va scritta su un'unica riga)

Ringrazio tutti

d@vid
22-05-2010, 23:12
Ragazzi non spaventatevi per il post lungo, ho cercato di fornirvi più dettagli possibile!!

Dovete solo farmi capire come devo fare per inserire all'interno di una pagina html il riferimento ad un .js preesistente, tutto qui

Grazie a chi vorrà aiutarmi:)

MaxArt
23-05-2010, 12:10
premessa: Ragazzi non spaventatevi per il post lungo!!Non è tanto essere lungo, ma è scritto male nel senso che i post che citi devi metterli dentro il tag [/I]], mentre il codice HTML è meglio metterlo dentro [HTML] e quello JavaScript dentro [PHP].

[QUOTE]Ho capito che devo salvare questo codice (uno dei due) in un file html e lanciarlo con firefox, ma non ottengo risultati.Consiglio: MAI usare frasi come "non funziona", "non va", "non ottengo risultati" per spiegare un problema. Devi dire:
1. cosa hai fatto;
2. cosa ti aspettavi di ottenere;
3. cosa invece hai ottenuto.

Probabilmente perchè non gli passo il percorso giusto, in quanto non ho dimestichezza con queste cose...Non devi passargli il percorso, devi metterci dentro proprio IL CONTENUTO del file sessionstore.js. Si tratta di dati in formato JSON.
Aprilo con un editor di testo, seleziona tutto, copia e incolla.

d@vid
23-05-2010, 13:47
Anzitutto grazie MaxArt per la risposta:)
Chiedo scusa per la poca chiarezza, ignoravo l'uso dei tag citati, provvedo ad aggiustare il post

Dunque
- quello che ho fatto è salvare il secondo codice HTML che ho postato in un file con estensione .html, modificando la stringa
// insert .mozilla/firefox/*/sessionstore.js here !
in
C:\Users\NOMEUTENTE\AppData\Roaming\Mozilla\Firefox\Profiles\IDNUMERICO.default\sessionstore.js
e nient'altro (per cui la riga precedente termina con "=" e quella successiva inizia con ";") .
Ho poi aperto questa pagina html (l'ho chiamata resume.html) in Firefox.
- quello che mi aspettavo di ottenere è una lista delle url visitate nell'ultima sessione di Firefox
- quello che invece ottengo (sicuramente perchè io non ho saputo capire quello che andava messo) è una pagina bianca

Allora, ho capito intanto che ho sbagliato a fare la modifica. Ora come detto apro il sessionstore.js con un editor di testo e vi metto il contenuto in quella parte di codice (precisamente nella linea compresa tra la riga che termina con "=" e quella che consiste del solo ";")

Intanto grazie, ora provo e aggiorno la situazione:)

MaxArt
23-05-2010, 17:58
Ok, ora hai spiegato bene il problema. Tieni a mente il consiglio perché, se hai dei problemi, poi magari chi ti può aiutare non lo fa perché non ha capito dove correggerti.
La modifica che hai fatto è corretta, facci sapere come ti è andata.

d@vid
23-05-2010, 20:01
Allora, quello che ottengo è solo una lista confusa di stringhe alfanumeriche, intervallate da alcuni indirizzi web che credo siano il risultato di Google per alcune ricerche fatte. In sostanza qualcosa compare, ma almeno nel mio caso non si tratta del tanto desiderato elenco delle schede aperte :D

Credo comunque che sia una questione di dati corrotti, tant'è che firefox (impostato per ripristinare in automatico l'ultima sessione attiva) mostrava un elenco vuoto di schede.

Ad ogni modo ho risolto ricorrendo all'esplorazione a vista "vecchio stile" della Cronologia, ora ho gli occhi che mi danno fastidio ma fa nulla :sofico:

Grazie ancora dell'intervento:)

MaxArt
23-05-2010, 21:34
Credo comunque che sia una questione di dati corrotti, tant'è che firefox (impostato per ripristinare in automatico l'ultima sessione attiva) mostrava un elenco vuoto di schede.Lo credo anch'io, a cose normali viene un elenco piuttosto carino tipo questo:
http://img109.imageshack.us/img109/4986/mozillasession.png