Hallo Rolf,
document.all zugriffe scheint der IE bevorzugt zu behandeln!
Ich greife ja nicht auf jeden einzelnen Link zu, sondern setze nur einen body.onclick
Könntest du deinen Code noch mal formatiert posten,
ich bekomm leider sonst nen Knick in der Optik ;)
Es gab da noch kleinere Änderungen, aber im Prinzip ist es dies hier:
-------------------------------------------------
Name='';
Email='';
URL='';
Grafik='';
Params='scrollbars,status,resizable';
document.body.onclick=checkForLink;
function checkForLink(x) // bei Klick in der Hauptdatei ohne, bei Klick im Popup mit Parameter
{
Base=x?x:window;
ClickObj=Base.event.srcElement;
if(!Base.document.all.tags('DL')[0].contains(ClickObj)) // Klick nicht im Threadbaum?
{
if(x&&Base.document.all.tags('TT')[0].contains(ClickObj)) // Klick Postingteil Popup?
{
if(ClickObj.tagName=='A') // Link erwischt?
ClickObj.target='_blank';
else with(Base)
{
Range=document.body.createTextRange(); // ff Worterkennung http oder www > Link
Range.moveToPoint(event.x,event.y);
Range.expand('word');
if(Range.text.charAt(0)=="'")
Range.moveStart('character',1);
if(Range.text.substr(0,4)=='http'||Range.text=='www')
{
Range.moveEnd('sentence',1);
RText=Range.text;
Limiter=['\r','\n','"',"'",',','[','(',' ',')',']'];
for(i in Limiter)
RText=RText.split(Limiter[i])[0];
Range.findText(RText);
Range.execCommand('CreateLink',false,RText.charAt(0)=='w'?'http://'+RText:RText);
}
}
}
return true;
}
LinkObj=ClickObj.tagName=='A'?ClickObj:ClickObj.parentNode; // Zweig: Klick im Threadbaum
if(LinkObj.tagName=='A')
{
ThreadPath=[]; // ff Ermitteln des Pfades zum geklickten
Thread=ClickObj; // Link im aktuellen Thread-Baum
while(Thread.parentNode.parentNode.tagName!='BODY')
{
ChildCount=0;
while(Thread.previousSibling) // Position auf jeder Objektebene wird ermittelt
{
ChildCount++;
Thread=Thread.previousSibling;
}
ThreadPath[ThreadPath.length]=ChildCount; // Array für die Position im Thread
Thread=Thread.parentNode;
}
ThreadPath.reverse();
if(!x) // wenn aus Hauptdatei aufgerufen
{
pop=open(LinkObj.href+'#a1','',Params);
MainThread=Thread;
}
pop.location.href=LinkObj.href+'#a1';
checkLoad();
return false;
}
}
function checkLoad()
{
count=0;
if(pop.location.href==LinkObj.href+'#a1'&&pop.document.all.bottom) // Popup geladen?
setTimeout('insert()',50);
else if(count<50) // wenn nicht, weitere 50x abfragen
{
count++;
setTimeout('checkLoad()',500); // im Abstand von 0.5 sec
}
}
function insert()
{
if(pop.document.all.url) // falls nicht die Forums-Fehlermeldung
{ // ...woran man nicht alles denken muß... :)
pop.location.hash='#a1';
pop.document.body.onclick=getPopLink;
with(pop.document.all)
{
name.value=Name; // ff Formularwerte setzen
email.value=Email;
url.value+=URL;
image.value+=Grafik;
body.value='Hallo '+tags('H2')[0].innerText.split(':')[0].split(' ')[0]+',\n\n'+pop.document.all.body.value+'\n\nGrüße,\n '+Name;
with(tags('P')[1])
if(lastChild.tagName=='A') // HP-URL angegeben?
lastChild.target='_blank';
if(tags('DL')[0])
tags('DL')[0].outerHTML=''; // Original-Threadbaum löschen
tags('H3')[0].outerHTML='<dl><dd id=popThread>'+MainThread.innerHTML+'</dd></dl><h3>Eigene Antwort schreiben</h3>';
}
ThrArray=[pop.document.all.popThread,MainThread];
for(j in ThrArray)
{
for(i in ThreadPath) // Farbänderungen auf zuvor ermitteltem Pfad
ThrArray[j]=ThrArray[j].childNodes[ThreadPath[i]];
ThrArray[j].style.color=j<1?'#ee6600':'#552200';
}
}
}
function getPopLink() // Eventhandler im Popup
{
if(!pop.closed&&pop.event)
return(checkForLink(pop));
}
void(null);
-------------------------------------------------
Bye, Stefan