FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Jag kör en klient-server-lösning för att maskera epostadresser på mina hemsidor (så inte de elaka spambottarna sniffar upp dem ni vet). Den går ut på att servern skickar:
Kod:
<span>info (snabel-a) example (punkt) se</span> Kod:
<a href="[email protected]">[email protected]</a> Problemet uppstår i MSIE (alla versioner). Trots att jag i min CSS specat färg för mina länkar, blir de genererade länkarna alltid vita med en grå skugga i MSIE. Dock blir färgerna korrekta i FF, Safari mfl. Hur lösa detta??? Visst skulle man kunna trycka dit färgerna med javascript efter att länken är genererad, men det blir oerhört klumpigt... Dessutom är ju den mystiska grå skuggan kvar (förmodligen). |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
skapas a-element eller hur gör du?
fungerar detta då? Kod:
<span id="mail">info (snabel-a) example (punkt) se</span> Kod:
<script type="text/javascript"> window.onload = function(){ maillink = document.getElementById("mail"); maillink.innerHTML=""; b=document.createElement("a"); b.href="mailto:[email protected]"; b.innerHTML="maila mig!!"; maillink.appendChild(b); } </script> annars lägg till i css att länkarna skall gälla även #mail a. Worth a try ![]() |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
Tack för förslaget. Jag testade att göra ungefär som du föreslog och då uppstår inte problemet. Efter lite forskande har jag också kommit fram till varför:
Mitt skript gör ungefär så här på varje <span> (node nedan) i dokumentet: Kod:
if( tmp=node.innerHTML.match(/^(([\w\.\+-]+) \((punkt|snabel-a)\) )+(\w+)$/) ) { var epost = tmp[0].replace(' (snabel-a) ','@').replace(/ \(punkt\) /g,'.'); var newnode = document.createElement('a'); newnode.appendChild( document.createTextNode(epost) ); newnode.href = 'mailto:'+epost; node.parentNode.replaceChild( newnode, node ); } Kod:
for( var i=0; i<node.attributes.length; i++ ) newnode.setAttribute( node.attributes[i].name, node.attributes[i].value ); Jag kunde lösa detta eftersom CMS:ets attribut alltig börjar på samma två bokstäver, så det räckte att filtrera på node.attributes[i].name.substr(0,2) inne i for-loopen. Tack för knuffen i rätt riktning! |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
Varför inte göra det hela på serverside? Alla maillänkar blir HTML kodade?
Tex: ! osv ? Där #22 är i decimal & #x21 är i hexadecimal? Hittills har jag inte fått ett enda spammail till någon utav dom addresserna som jag har använt detta på. |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Medlem
|
Det är ju bra om det funkar. Det känns möjligen som att det tar längre tid för spambottarna att lära sig javascript än att lära sig html-entities, men det är förstås bara en gissning. Ska lägga detta i portföljen...
|
|||
![]() |
![]() |
Svara |
|
|