mmofacts.com

Opera 7.54 -> DOM Concurrency?

gepostet vor 19 Jahre, 10 Monate von schokofreak
Guten Tag

Schon mal versucht, was Opera macht bei einem Statement im Stile von:
 

var x = document.createElement("whatever");
x.appendchildElements("sehr viele");

var y = document.createElement("whatever");
y.appendchildElements("2, 3");

y.appendChild(x);


Fazit: Man kann es durchprobieren... schön ca. jedes 3. mal gehts ned.
-> Opera zu / opera auf.
Jedes 5. mal gehts ned
-> Opera zu / opera auf
jedes 2. mal gehts ned.

Was ich sagen will: Opera hat da eindeutig ne schwäche.

Ist dies noch jemandem aufgefallen?
Und wenn ja: Kennt da jemand ev. n Workaround dazu?

Gruss
gepostet vor 19 Jahre, 10 Monate von Kampfhoernchen
Das ist der Grund, warum ich JavaScript / DOM hasse. Jeder Browser macht irgendwat anders.

Vorgestern hab ich gemerkt, das die IE 5
window.document.getElementById()
net versteht, da muss man das window weglassen.

Das Problem an Opera ist dabei, dass es keinerlei Fehlermeldung auswirft, sondern einfach nix tut. Obwohl ich Opera-Fan bin, find ich die neue Version echt bekloppt.
gepostet vor 19 Jahre, 10 Monate von TheUndeadable
Eine modifizierte Klasse von SelfHTML, sämtliche dort befindlichen Funktionen klappen auch mit den von mir getesteten Opera's:

Dieser Source-Code, besonders die von mir geschriebenen Erweiterungen (DHTML_*), darf nicht unter die GPL oder LGPL gestellt werden und ist ansonsten so frei, wie SelfHTML es definiert.

 

/* DHTML-Bibliothek */

var DHTML = 0, DOM = 0, MS = 0, NS = 0, OP = 0;

function DHTML_init()
{
if (window.opera)
{
OP = 1;
}

if(document.getElementById)
{
DHTML = 1;
DOM = 1;
}

if(document.all && !OP)
{
DHTML = 1;
MS = 1;
}
if(document.layers && !OP)
{
DHTML = 1;
NS = 1;
}
}

function getElem(p1,p2,p3)
{
var Elem;
if(DOM)
{
if(p1.toLowerCase()=="id")
{
if (typeof document.getElementById(p2) == "object")
Elem = document.getElementById(p2);
else Elem = void(0);
return(Elem);
}
else if(p1.toLowerCase()=="name")
{
if (typeof document.getElementsByName(p2) == "object")
Elem = document.getElementsByName(p2)[p3];
else Elem = void(0);
return(Elem);
}
else if(p1.toLowerCase()=="tagname")
{
if (typeof document.getElementsByTagName(p2) == "object" || (OP && typeof document.getElementsByTagName(p2) == "function"))
Elem = document.getElementsByTagName(p2)[p3];
else Elem = void(0);
return(Elem);
}
else return void(0);
}
else if(MS)
{
if(p1.toLowerCase()=="id")
{
if (typeof document.all[p2] == "object")
Elem = document.all[p2];
else Elem = void(0);
return(Elem);
}
else if(p1.toLowerCase()=="tagname")
{
if (typeof document.all.tags(p2) == "object")
Elem = document.all.tags(p2)[p3];
else Elem = void(0);
return(Elem);
}
else if(p1.toLowerCase()=="name")
{
if (typeof document[p2] == "object")
Elem = document[p2];
else Elem = void(0);
return(Elem);
}
else return void(0);
}
else if(NS)
{
if(p1.toLowerCase()=="id" || p1.toLowerCase()=="name")
{
if (typeof document[p2] == "object")
Elem = document[p2];
else Elem = void(0);
return(Elem);
}
else if(p1.toLowerCase()=="index") {
if (typeof document.layers[p2] == "object")
Elem = document.layers[p2];
else Elem = void(0);
return(Elem);
}
else return void(0);
}
}

function getCont(p1,p2,p3)
{
var Cont;
if(DOM && getElem(p1,p2,p3) && getElem(p1,p2,p3).firstChild)
{
if(getElem(p1,p2,p3).firstChild.nodeType == 3)
Cont = getElem(p1,p2,p3).firstChild.nodeValue;
else
Cont = "";
return(Cont);
}
else if(MS && getElem(p1,p2,p3))
{
Cont = getElem(p1,p2,p3).innerText;
return(Cont);
}
else return void(0);
}

function getAttr(p1,p2,p3,p4)
{
var Attr;
if((DOM || MS) && getElem(p1,p2,p3))
{
Attr = getElem(p1,p2,p3).getAttribute(p4);
return(Attr);
}
else if (NS && getElem(p1,p2))
{
if (typeof getElem(p1,p2)[p3] == "object")
Attr=getElem(p1,p2)[p3][p4]
else
Attr=getElem(p1,p2)[p4]
return Attr;
}
else return void(0);
}


function setCont(p1,p2,p3,p4)
{
if(DOM && getElem(p1,p2,p3) && getElem(p1,p2,p3).firstChild)
{
getElem(p1,p2,p3).firstChild.nodeValue = p4;
}
else if(MS && getElem(p1,p2,p3))
{
getElem(p1,p2,p3).innerText = p4;
}
else if(NS && getElem(p1,p2,p3))
{
getElem(p1,p2,p3).document.open();
getElem(p1,p2,p3).document.write(p4);
getElem(p1,p2,p3).document.close();
}
}


function DHTML_GetNodeByID ( szID )
{
return document.getElementById ( szID );
}

function DHTML_SetTextContentOfNode ( oNode, szText )
{
oNode.firstChild.nodeValue = szText;
}

function DHTML_AddNode ( oNode, szType )
{
// Shitty IE, exclusive
if ( MS )
{
if ( szType == "tr" )
{
return oNode.insertRow ();
}

if ( szType == "td" )
{
return oNode.insertCell ();
}
}

var oNewNode = DHTML_CreateNode ( szType );
oNode.appendChild ( oNewNode );

return oNewNode;
}

function DHTML_CreateNode ( szType )
{
var oNewNode = document.createElement ( szType );

return oNewNode;
}

function DHTML_AppendNode ( oNode, oChildNode )
{
oNode.appendChild ( oChildNode );
}


function DHTML_AddTextNode ( oNode, szText )
{
var oNewNode = document.createTextNode ( szText );
oNode.appendChild ( oNewNode );

return oNewNode;
}

function DHTML_SetText ( oNode, szText )
{
oNode.firstChild.nodeValue = szText;
}

function DHTML_RemoveAllSubNodes ( oNode )
{
var oSubNode;

do
{
oSubNode = oNode.firstChild;

if ( oSubNode != undefined )
{
oNode.removeChild ( oSubNode );
}
}
while ( oSubNode != undefined );

}

function DHTML_AddEvent ( oNode, szText, fctFunction )
{
// Shitty IE needs special treatment

if ( MS )
{
if ( szText == "click" )
{
oNode.onmousedown = fctFunction;
}

if ( szText == "mousemove" )
{
oNode.onmousemove = fctFunction;
//alert ( fctFunction );
}
}
else
{
oNode.addEventListener ( szText, fctFunction, true );
}

}

function DHTML_GetEventSrcElement ( ev )
{
// SHITTY IE, I HATE YOU

if ( MS )
{

return window.event.srcElement
}
else
{
return ev.target;
}
}

DHTML_init();


Auf diese Diskussion antworten