Newsgroup: it.comp.lang.javascript
Titolo: Script nell'head richiamato nel body

HO preso questo script aggiungi a preferiti. Se lo metto nel Body funziona
correttamente. Ma io ho la necessità di inserirlo nell'head del sito e
richiamarlo poi tramite una funzione. Solo che non ci riesco, sapreste
dirmi dove sbaglio?
Script originale perfettamente funzionante:
<script language="javascript" type="text/javascript">
<!-- Bookmark script
var b_url = "
http://www.morpheusweb.it
";
var b_title = "MorpheusWeb.it";
var b_mouseo = "Aggiungi ai preferiti";
var b_text = "Aggiungi ai preferiti";
var b_nn = "Aggiungi ai preferiti";
var b_nn6 = "Aggiungi ai preferiti";
var b_op = "Aggiungi ai preferiti";
var b_other = "Aggiungi ai preferiti";
// non editare al di sotto 
if ((navigator.appName == "Microsoft Internet Explorer") &&
(parseInt(navigator.appVersion) >= 4)) {
  document.write('<a
href="javascript:window.external.addfavorite(b_url,b_title);" ');
  document.write('onmouseover="window.status=');
  document.write(" (b_mouseo); return true");
  document.write('">' + b_text + '</a>'); 
}
else if ((navigator.appName == "Netscape") &&
(parseInt(navigator.appVersion) <= 4)) {
  document.write('<a href="javascript:void(0);" onclick="alert(b_nn);">'+
b_text +'</a>'); 
}
else if ((navigator.appName == "Netscape") &&
(parseInt(navigator.appVersion) >= 5)) {
  document.write('<a href="javascript:void(0);" onclick="alert(b_nn6);">'+
b_text +'</a>'); 
}
else if (navigator.appName == "Opera") {
  document.write('<a href="javascript:void(0);" onclick="alert(b_op);">'+
b_text +'</a>'); 
}
else {
  document.write('<a href="javascript:void(0);"
onclick="alert(b_other);">'+ b_text +'</a>'); 
}
-->
</script>
<noscript></noscript>
_ _ _ _ _ _ _ _ _ _ _ 
Scirpt inserito nell'head che non funziona. In pratica ho inserito la
funzione e poi l'ho richiamata nel body, myfunction()
<html>
<head>
<script language="javascript" type="text/javascript">
<!-- Bookmark script
myfunction() 
{
var b_url = "
http://www.morpheusweb.it
";
var b_title = "MorpheusWeb.it";
var b_mouseo = "Aggiungi ai preferiti";
var b_text = "Aggiungi ai preferiti";
var b_nn = "Aggiungi ai preferiti";
var b_nn6 = "Aggiungi ai preferiti";
var b_op = "Aggiungi ai preferiti";
var b_other = "Aggiungi ai preferiti";
// non editare al di sotto 
if ((navigator.appName == "Microsoft Internet Explorer") &&
(parseInt(navigator.appVersion) >= 4)) {
  document.write('<a
href="javascript:window.external.addfavorite(b_url,b_title);" ');
  document.write('onmouseover="window.status=');
  document.write(" (b_mouseo); return true");
  document.write('">' + b_text + '</a>'); 
}
else if ((navigator.appName == "Netscape") &&
(parseInt(navigator.appVersion) <= 4)) {
  document.write('<a href="javascript:void(0);" onclick="alert(b_nn);">'+
b_text +'</a>'); 
}
else if ((navigator.appName == "Netscape") &&
(parseInt(navigator.appVersion) >= 5)) {
  document.write('<a href="javascript:void(0);" onclick="alert(b_nn6);">'+
b_text +'</a>'); 
}
else if (navigator.appName == "Opera") {
  document.write('<a href="javascript:void(0);" onclick="alert(b_op);">'+
b_text +'</a>'); 
}
else {
  document.write('<a href="javascript:void(0);"
onclick="alert(b_other);">'+ b_text +'</a>'); 
}
}
-->
</script>
<head>
<body>
</body>
<script language="javascript" type="text/javascript">
myfunction()
</script>
</html>
Ciao
Mattao09
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

In data Wed, 12 Apr 2006 09:39:46 +0200, Mattao09 ha scritto:
[CUT]
Basta aprire la pagina con un browser che abbia una gestione errore seria
(io ho testato con firefox 1.5) e vedrai:
 Errore: myfunction is not defined
File sorgente:
http://www.criosoftware.it/bak/Mattao09.htm
Riga: 6
manca "function" (function myfunction, non semplicemente myfunction...)
(non hai richiamato lo script nel body ma *DOPO* il body, evita (mettilo
prima della chiusura del body)
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 </html>
Prova a sostituire tutti quei document.write('xxx') in HTMLOut+='xxx', 
trasformando davvero la porzione di script in una funzione che 
restituisce una stringa contenente l'HTML da inserire nella pagina.
Alex
=========================
myfunction()
{
var b_url = "
http://www.morpheusweb.it
";
var b_title = "MorpheusWeb.it";
var b_mouseo = "Aggiungi ai preferiti";
var b_text = "Aggiungi ai preferiti";
var b_nn = "Aggiungi ai preferiti";
var b_nn6 = "Aggiungi ai preferiti";
var b_op = "Aggiungi ai preferiti";
var b_other = "Aggiungi ai preferiti";
var HTMLOut="";
// non editare al di sotto
if ((navigator.appName == "Microsoft Internet Explorer") &&
(parseInt(navigator.appVersion) >= 4)) {
   HTMLOut+='<a
href="javascript:window.external.addfavorite(b_url,b_title);" ';
   HTMLOut+='onmouseover="window.status=';
   HTMLOut+=" (b_mouseo); return true";
   HTMLOut+='">' + b_text + '</a>';
}
else if ((navigator.appName == "Netscape") &&
(parseInt(navigator.appVersion) <= 4)) {
   HTMLOut+='<a href="javascript:void(0);" onclick="alert(b_nn);">'+
b_text +'</a>';
}
else if ((navigator.appName == "Netscape") &&
(parseInt(navigator.appVersion) >= 5)) {
   HTMLOut+='<a href="javascript:void(0);" onclick="alert(b_nn6);">'+
b_text +'</a>';
}
else if (navigator.appName == "Opera") {
   HTMLOut+='<a href="javascript:void(0);" onclick="alert(b_op);">'+
b_text +'</a>';
}
else {
   HTMLOut+='<a href="javascript:void(0);"
onclick="alert(b_other);">'+ b_text +'</a>';
}
return HTMLOut;
}
============================================
document.write(myfunction());

 myfunction()
così stai chiamando la function myfunction anziché definirla ...
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 
Azz... non lo avevo notato. Ero troppo lazzarone per sperimentare lo 
script :-)
Alex.

 prima della chiusura del body)
Grazie ho corretto tutto ma ancora non mi funziona niente, sapreste dirmi
cosa c'è di sbagliato in questo codice ed eventualmente correggerlo?
Grazei a tutti:
<html>
<head>
<script language="javascript" type="text/javascript">
function myfunction()
{

}
</script>
</head>
<body>
<script language="javascript" type="text/javascript">
myfunction ();
</script>
</body>
</html>


 cosa c'è di sbagliato in questo codice ed eventualmente correggerlo?
Io ieri ho copiaincollato la pagina che hai postato, messo "function" e
funzionava tutto: 
 
http://www.criosoftware.it/bak/Mattao09.htm
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 
http://www.criosoftware.it/bak/Mattao09.htm
A me non va', ne su IE ne su FireFox.
In entrambi i casi l'errore pare essere nella definizione delle variabili: 
sia su IE che su FF si lamenta che la rispettiva variabile non e' definita 
(b_mouseo e b_nn6)

 A me non va', ne su IE ne su FireFox.
? non va il link che ti ho indicato ?
a me va perfettamente (sto parlando ovviamente della function, ossia che
compare la scritta "aggiungi ai preferiti", non ho premuto assolutamente il
link)
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 link)
Evvabbe', allora cosi' ci riuscivo anch'io ;-DDD

 Evvabbe', allora cosi' ci riuscivo anch'io ;-DDD
eh, a domanda "non funziona" rispondo "metti function e funziona".
Comunque sia ha già posto questa domanda il 03/04 e lì gli ho risposto
chiaramente sul perché non va (ha variabili dichiarate con var dentro la
function, infatti gli avevo detto di mettere dentro una function da
"if(navigator..." in poi).Oppure, semplicemente, può togliere il var.


 link)
Cmq, credo di aver capito l'errore... (usando come base la mia conoscenza 
dei linguaggi in generale, non di js, quindi e' possibile che stia cannando)
Lo script dichiara un tot di variabili. Poi scrive nel document un href che 
fa uso di queste variabili.
Ora, se inserisci l'intero script nel body SENZA usare una funzione, e' 
ovvio che le variabili hanno lo scope di pagina e quindi, quando i vari 
eventi vi si riferiscono, le trovano senza problemi.
MA: inserendo lo script in una funzione esterna richiamata da dentro il 
body, quello che succede e' che le variabili hanno lo scope della funzione. 
Quando l'HREF cerca di utilizzarle, ovviamente non le trova.
Possibile soluzione: dichiarare quelle variabili FUORI dalla funzione. 
Sempre nell'Head, ma fuori dalla funzione.
Ciao. 

 "if(navigator..." in poi).Oppure, semplicemente, può togliere il var.
Ah...saperlo evitavo di perdere tempo a rispondergli :-)
Dopo do' un'occhio al tuo mex, per capire se ho azzeccato la soluzione...