Newsgroup: it.comp.lang.javascript
Titolo: Aiuto!!!!

Ciao,
avrei bisogno di un piccolo aiuto:
Avrei bisogno di uno script che
intercetti tutte le chiamate ad un tag <a> e che se trova mailto: mi
fa apparire una finestra di pop-up. Il JavaScript, dovrebbe essere
crossbrowser.
Cercate di aiutarmi. Grazie a tutti!!
Roberto Abbate. Webmaster di Galileo:
http://www.ipoint2000.net/galileo

Non ho capito bene se devo solo avvertire che qui o lì c'è un "href=mailto:..." oppure far diventare ogni "href=mailto:..." un "href=popup()", comunque questo script fa la seconda cosa:
for (var i=0;i<document.anchors.length;i++)
 if (document.anchors[i].href.substring(0,7)=="mailto:")
  document.anchors[i].href="Miafunzione("+document.anchors[i].href+");";
e poi arricchisci con una MiaFunzione del tipo:
function Miafunzione(exHref)
{
    alert("Going to: "+exHREF);
    popup=window.open(...);
}
 
puoi anche accedere a onclick e tutte le altre proprietà che vuoi.
Con IE funziona perfettamente.
Con NS, invece:
Tutte le suddette proprietà ci sono, ma quando gli dico di cambiarle non le cambia.
Il mio Netscape 4.5 è mezzo sputtan[Biiip] e da reinstallare, però fa cenno che la strada più o meno è quella.
Se mi viene qualche idea ti dico (a me le idee vengono in mente quando penso a tutt'altro... :)
:)
Se invece il problema era il primo dei due che dicevo, allora la cosa è ancora più semplice:
for (var i=0; i<document.links.length;i++)
    if (document.links[i].toString().substring(0,7)=="mailto:")
        alert("xxxxx");
Vale ancora la storia di Netscape, che mi si inchioda in continuazione, quindi non posso dirti nulla a riguardo...
Ciao.
Darius. (
www.infotronica.it/darius/
)


Allora, lo script lo provero'. Semplicemente, mi serve che intercetti
il mailto (non deve apparire il programma di posta predefinito) e apra
una nuova finestra.
Comunque, grazie... ora guardo se va...
Se ti viene in mente qualcosa, rimaniamo in contatto... io gestisco un
sito su DHTML (non sembra?!). Scrivimi su 
dh...@iname.com
Roberto e Alessandro Abbate. Galileo
http://www.ipoint2000.net/galileo

On Sat, 26 Jun 1999 14:51:21 GMT, 
rab...@geocities.nospam.com
(Galileo) wrote:
Allora, lo script non va (io uso IE5). E' questo il codice?
<html>
<head>
<script language="JavaScript">
<!--
for (var i=0;i<document.anchors.length;i++)
 if (document.anchors[i].href.substring(0,7)=="mailto:") = 
document.anchors[i].href="Miafunzione("+document.anchors[i].href+");";
function Miafunzione(exHref)
{
    alert("Going to: "+exHREF);
    popup=window.open(finestra.htm)
}
//-->
</script>
</head>
<body>
<a href="mailto:
dh...@iname.com
">Scrivimi</a>
</body>
</html>
Ciao.
http://www.ipoint2000.net/galileo

Una correzione per la prima funzione:
for (var i=0;i<document.anchors.length;i++)
if (document.anchors[i].href.substring(0,7)=="mailto:")
  document.anchors[i].href="javascript:Miafunzione('"+document.anchors[i].href+"');";
function Miafunzione(exHref)
[...]
Ciao.
Darius. (
www.infotronica.it/darius/
)

Ho dimenticato di specificare che l'<a> ha bisogno di un name=xxx, altrimenti lo script non funge.
Scusami ma fino a lunedi sono occupatissimo. Eventualmente potrei rivedere lo script lunedi pomeriggio e... migliorarlo un po' (?).
Questo su IE4 funziona:
<html>
<head>
</head>
<body>
<a name="n1" href="mailto:
dh...@iname.com
">Scrivimi: funziona!</a><BR>
<a href="mailto:
dh...@iname.com
">Non scrivermi: non funziona</a>
<script language=javascript>
<!--
for (var i=0;i<document.anchors.length;i++)
{
if (document.anchors[i].href.substring(0,7)=="mailto:")
  document.anchors[i].href="javascript:Miafunzione('"+document.anchors[i].href+"');";
}
function Miafunzione(exHREF)
{
    alert("Going to: "+exHREF);
    popup=window.open("about:blank","finestra");
    popup.document.write("old HREF was: "+exHREF);
}
//-->
</script>
</body>
</html>
Ciao.
Darius. (
www.infotronica.it/darius/
)

Scusami ma fino a lunedi sono occupatissimo.
A vedere tutta la roba che posto non si direbbe, vero?
:)
Ora ti devo proprio lasciare (fino a lunedì, s'intende, poi vedo cosa posso fare anche per Netscape) con questo script un pochino migliorato:
<html>
<head>
</head>
<body>
<a name="n1" href="mailto:
dh...@iname.com
">Scrivimi</a><BR>
<a href="mailto:
dmDa...@hotmail.com
">Scrivimi anche qui!</a><BR>
<a href="
http://www.infotronica.it/darius/
">Questo ha un protocollo 'http'</a>
<script language=javascript>
<!--
if (document.all)
{
for (var i=0;i<document.all.length;i++)
{
  if(document.all[i].protocol=="mailto:")
   document.all[i].href="javascript:Miafunzione('"+document.all[i].href+"');";
}
}
function Miafunzione(exHREF)
{
    popup=window.open("about:blank","_blank");



Purtroppo non mi va :-((((((
Facciamo cosi'... scrivimi all'indirizzo 
al...@tiscalinet.it
 con
allegato il file corretto.
Grazie
Galileo
http://www.ipoint2000.net/galileo

Ultima versione perfezionata e semplificata: l'ho provato e funziona sia con IE4 che con NS4.5:
<html>
<body>
<a name="n1" href="mailto:
dh...@iname.com
">Scrivimi</a><BR>
<a href="mailto:
dmDa...@hotmail.com
">Scrivimi anche qui!</a><BR>
<a href="
http://www.infotronica.it/darius/
">Questo ha un protocollo 'http'</a><BR>
Ciao.<BR>
Darius. (<A HREF="
http://www.infotronica.it/darius/
">
www.infotronica.it/darius/
</A>)
<script language=javascript>
for (var i=0;i<document.links.length;i++)
if(document.links[i].protocol=="mailto:")
  document.links[i].href="javascript:Miafunzione('"+document.links[i].href+"');";
function Miafunzione(exHREF)
{
    popup=window.open("about:blank","_blank");
    popup.document.write("old HREF was: "+exHREF);
    popup.document.close();
}
</script>
</body>
</html>
Alla fine la soluzione era molto semplice, come vedi. L'altro giorno avevo provato questa stessa strada (document.links), ma non so perché con NS non mi funzionava...
Al NG il "piacere" di verificarne il funzionamento con tutti gli altri browsers.
Ciao.
Darius. (
www.infotronica.it/darius/
)