Visa ett inlägg
Oläst 2008-02-23, 10:54 #3
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
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 );
}
Eftersom det sitter en massa specialattribut på alla element, som används av CMS:et i redigeringsläge hade jag också lagt in följande innan replaceChild ovan:
Kod:
for( var i=0; i<node.attributes.length; i++ )
 newnode.setAttribute( node.attributes[i].name, node.attributes[i].value );
för att få med allt till det nya elementet på ett generiskt sätt. Detta visade sig vara boven, ty i MSIE ingår även icke-satta attribut i attributes-vektorn. Det är ju lugnt i de flesta fall, för det gör ju inget om man får med t ex style="", men i fallet disabled, som inte behöver ha något värde är det värre. Resultatet blev att de genererade länkarna fick attributet disabled, vilka i MSIE visar som gråa med vit skugga.

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!
turboraketti är inte uppkopplad   Svara med citatSvara med citat