Cyx23: Was ist an diesem Script falsch?

Beitrag lesen

Hallo,

document[nlx].document.bgColor existiert.

ist allerdings noch kompakter als .layers[..

Die Betonung liegt hier auf "schienen". Wenn es nicht Unkenntnis über grundlegende JavaScript-Mechanismen (auch z.B. 'this') ist, dann ist es meist ein Konzeptfehler, der durch eine günstigere Funktions- und Variablenstruktur sehr sauber zu lösen wäre.

wenn sich das Konzept etwas während der Entwicklung ändert, kommt ausser Unkenntnis auch schonmal der Kostenfaktor in Frage, der kurzfristige oder selbst der kursichtige Blick auf rasche Liquidität wird immer wieder mal den Vorrang haben.

Auf die Schnelle hab ich jetzt nur das Beispiel location.href=eval("'"+parent.l1.document.title+Ziel+"'") gefunden,

Je nach Browser ist jener document.title auch (vom User!) schreibbar; Du hast also nicht den leisesten Schimmer, was hiernach passieren mag. Missbrauch ist möglich.

der Missbrauch eine andere URL anzusteuern? Na ja, ich hab kein besseres Beispiel gefunden, offenbar verwende ich eval deutlich seltener als zuerst von mir vermutet, trotzdem möchte ich diese Möglichkeit nicht missen.

Aus welchem Grund sollte in einem Title eigentlich etwas stehen, dass man als URL-Basis verwenden kann?

es war die kompakteste Möglichkeit für ein Frame verschiedene gleiche Sprungziele bei verschiedenen alternativen Dateien zu ermöglichen. Wohl ein ähnliches Problem wie Werteübergabe bzw. hier die Ersparnis einer Variablen in top welche Datei gerade im Frame ist, wobei etwas wie nur "#+ziel" nicht ging.

Und warum eval()st Du auf eine String-Verknüpfung, um anschließend einen String zu erhalten, den Du schon bei der String-Verknüpfung selbst hattest?

ich müsste da nochmal testen was es sollte, wie gesagt nicht dokumentiert und schon was älter, ich vermutete ja gerade eine Besonderheit bei Opera600 (oder 5, oder Mozilla 09; vielleicht könnte es auch sein dass irgendwelche Objekte erstmal noch gar nicht existieren.

Aber ich hab noch was gefunden, soll jedoch kein Beispiel sein dass es ohne eval nicht ginge (und Details wie px oder pixelleft usw. werden hier bewusst "übersehen"):

if(document.layers)au="sz"; if(document.all)au="all.sz.style"; if(document.getElementById)au="getElementById('sz').style";
function dkr(){
abo=25;
eval("document."+au+".left="+abo+";");

... hier ist es halt angenehm, für alle Browser recht kompakt mit einer Anweisung auszukommen.
Oder geht es sogar ohne eval noch kürzer?

Grüsse

Cyx23