Autor Zpráva
tonda
Profil *
Dlouho dobu jsem používal maskování mailu přes funkci jako je tato:

function mejl(jmeno,domena, tld)
{var zavinac = '@'; var tecka = '.'
document.write('<a href="mailto:'+jmeno+zavinac+domena+tecka+tld+'">'+jmeno+zavinac+domena+tecka+tld+'</a>')}


Potřeboval bych to ale upravit na variantu přes DOM (tj. bez document.write) pro použití v XHTML.
Mohl byste mi prosím někdo hodit nějakej odkaz, kde se to řeší (já nic stravitelného nenašel), případně rovnou navrhout řešení (včetně toho, jak se ta funkce pak bude volat)?
Vřelé díky
peta
Profil *
tonda: DOM neporadim, mozna jo
tento script mi kdosi poradil na pridani popisku k obraku podle ALTu

function putAlt(idecko)
{var xspany=objGet(idecko).getElementsByTagName("A");
for(i=0;i<xspany.length;i++)
{ xchild=xspany[i].childNodes;
if (xchild[0].tagName=="IMG")
{ img=xchild[0];
alt=img.getAttribute("alt");
desc=document.createElement("i");
descText=document.createTextNode(alt);
desc.appendChild(descText);
xspany[i].appendChild(desc);
}
}
}


ale mail se maskuje
- obrazkem (zavinace nebo mailu, bez nebo s mailto) (na coz se neda kliknout)
- zapisem zavinace jako entity: @ = @ (da se kliknout)
- mail at neco.cz (bez nebo s mailto) (neda se kliknout)
- prepisem adresy pomoci JS (coz se asi nej dela pres DOM, moc nevim, pouzivam entity, ale umel bych to jako onload prepsani spanu s id="m1" .. "mX" pres innerHTML vzit vnitrek spanu a pretvorit jej na ahref a vepsat to bud do spanu nebo jej prepsat outerhtml)
mas mailto:mailXYZneco.cz a XYZ nahradis zavinacem (bez js je mail nesmyslny)

Nejspolehlivejsi je mail nedavat vubec, pouze lidem znamym. Nebo mit 1 mail obchodni a druhy soukromy. Ze soukromeho pak odpovidas.
tonda
Profil *
Mail přes obrázek je nepraktickej (kvůli každýmu mejlu něco bastlit v obrázkovým editoru mi přijde šílený).
Slovní vyjadření mailu je na stránkách pro "internetově nezdatné" uživatele taky nepoužitelný - nepochopí to.
Zápis přes entity mi nepřijde spolehlivej - s tím by si měl lepší mail-harvester poradit.
Takže javascriptový řešení mi přišlo nejlepší (s tím, že do noscriptu dám slovní vyjádření - lidé, co umí vypnout JavaScript, by s ním neměli mít problémy).

Každopádně to lehce odbočujeme. Vykutil jsem tohleto (vloží to mejlovej odkaz do spanu, kterej předám v parametru kde):

function mejl(tld,domena,jmeno,kde) {
var zavinac = '@'; var tecka = '.'
odkaz = document.createElement("a");
odkaz.setAttribute ("href", "mailto:"+jmeno+zavinac+domena+tecka+tld);
text = document.createTextNode(jmeno+zavinac+domena+tecka+tld);
foo = document.getElementById(kde).appendChild(odkaz);
foo.appendChild(text);
}


FF, Opera v pohodě, ale nechodí to v IE :( Je tam nějaká chyba, nebo může být problém, že IE dostává ten XHTML dokumtent coby text/html, kdežto FF a Opera jako application/xhtml+xml?
tonda
Profil *
Tak ono to šlape i v IE - asi jsem měl vlčí mlhu.
peta
Profil *
proc to mas takto?
odkaz.setAttribute ("href", "mailto:"+jmeno+zavinac+domena+tecka+tld);

proc ne primo?
var text=jmeno+"@"+domena
// pripadne s entitou misto @
// domena bude cely retezec 'neco.cz'
odkaz.setAttribute ("href", "mailto:"+text);
text = document.createTextNode(text)
a mas usporeny kod...

Pripadne bys mohl z pole vybirat cely mail a pomoci replace nahradit konkretni retezec za @ nez to skladat ze dvou promennych... Ale to je samo na tvurci a funkci. treba mas jenom 2-3 maily a je to tak vyhodnejsi, protoze maji stejnou domenu
Fred
Profil
Trochu jsem si tímhle hrál, jenom bych potřeboval radu od nějakého péhápéčkaře jak lze nějak snadno načíst z url nějaké proměné jako v js pomocí httpGetVars. Když jsem si to tu četl napadalo mě dost problémů a to hlavně, že s vypnutým js je to k ničemu a taky je možné, že chytrý spambot se chytne na sekvenci mailto a zbytek vydedukuje. Kromě toho by to házelo zbytečné 404 do logu. Nakonec jsem vyplodil tohle

<script type="text/javascript">
<!--
function emaily(){
if (!document.getElementsByTagName) return;
var el=document.getElementsByTagName("a");
for (var i=0;i<el.length;i++){
if (el[i].getAttribute("href").indexOf("vypnutyjs")!=-1){
var mail=el[i].getAttribute('href');
var titl=el[i].getAttribute('title');
titl=titl.replace(new RegExp("-zavinac-","g"), "@");
titl=titl.replace(new RegExp("-tecka-","g"), ".");
mail=titl
titl='mailto:'+titl
el[i].setAttribute('href',titl);
el[i].setAttribute('title',mail);
}}}
window.onload=emaily
//-->
</script>
</head>
<body>

<a href="vypnutyjs.php?mkomarek-zavinac-gmail-tecka-com" title="mkomarek-zavinac-gmail-tecka-com">mail</a>

No a kdybych věděl jak na to v php, přečetl bych tu část v url vypnutyjs.php?mkomarek-zavinac-gmail-tecka-com za otazníkem a na té stránce by bylo třeba Chtěl/a jste odeslat zprávu na mkomarek-zavinac-gmail-tecka-com, ale máte vypnutý javascript je třeba nahradit atd.
peta
Profil *
Fred:
if(count($HTTP_GET_VARS))
{
$jmeno1=$_GET['jmeno1'];
$jmeno2=$_GET['jmeno2'];
$heslox=$_GET['heslox'];
}
else
if(count($HTTP_POST_VARS))
{
$jmeno1=$_POST['jmeno1'];
$jmeno2=$_POST['jmeno2'];
$heslox=$_POST['heslox'];
}

Ale vicemene se to dela samo, proste, kdyz mas tak nastavene PHP
proste v $jmeno1 mas vse, co je za rovnase:
aaa.php?jmeno1=...&jmeno2=...

a do JS to das pak pres
<script>
x=<? $jmeno1 ?>
</script>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0