mmofacts.com

Opera 7.54 -> DOM Concurrency?

gepostet vor 19 Jahre, 9 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, 9 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, 9 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