Frank Weber: Internet Explorer reagiert nicht auf AJAX generierte Links

Beitrag lesen

Hallo Mathias,

createAttribute/setAttributeNode solltest du auf jeden Fall vermeiden.

Zu setAttribute hatte ich das hier schon öfter gelesen und deshalb setAttributeNode genommen. Aber das ist dann wohl auch nicht besser.

Du kannst einfach elementknoten.attribut = "wert" schreiben.

Das hatte ich auch schon probiert, nur kam im IE das Gleiche wie bei setAttributeNode raus und in Firefox funktionierte es dann überhaupt nicht mehr.

Allerdings kannst du einige Attribute nicht auf diese Weise setzen. Dazu gehören JavaScript-Event-Handler. Du kannst nicht element.onclick = "navi_click('1')"; schreiben (gilt genauso für createAttribute/setAttributeNode), sondern musst der onclick-Eigenschaft eine JavaScript-Funktionsreferenz zuweisen. Als z.B. element.onclick = function () { navi_click('1') };

Das ist nun in der Tat interessant. Und funktioniert anscheinend auch in allen Browsern. Nur gefallen tut's mir nicht - aber das ist mein Bier.
Die Frage ist nun, wieso funktioniert es über setAttributeNode und ohne Funktionsreferenz in Firefox, Opera und Safari. Weil sie nett sein wollen obwohl es nicht gehen müsste?

Und schlußendlich ist at nach
element.onclick = function () { navi_click('1') }
at = element.getAttribute("onsubmit")

in Firefox null. Ist es also gar kein reguläres Attribut?
at = element.onsubmit
funktioniert allerdings.

Über das Thema würde ich gerne mehr nachlesen, hast Du da einen Tip?

Gruß,
Frank