<form onsubmit="return speichern()">
jetzt soll eine Methode in das Ereignis "submit" mit addEventListenter/attachEvent eingetragen werden, die VOR dem Ereignis "speichern" ausgeführt wird.
Wenn du mit traditionellem Event-Handling und Inline-JavaScript arbeitest, kannst du diesen Handler nicht mit addEventListener/attachEvent überschreiben oder einen Handler registrieren, der vorher ausgeführt wird.
Am besten wäre natürlich, wenn du auf Event-Handler-Attribute verzichtest und sämtliche Handler mit addEventListener/attachEvent registrierst.
So kannst du folgendes machen: Speichere den bestehenden submit-Handler (das ist ein Funktionsobjekt), lösche ihn und registriere einen neuen mit addEventListener, welcher den alten aufruft.
var f = document.getElementById('form');
var oldHandler = f.onsubmit;
f.onsubmit = null;
f.addEventListener('submit', function (e) {
// mach was,
// dann rufe alten Handler auf
if (oldHandler) {
return oldHandler.call(this, e);
}
}, false);
call() wird hier verwendet, damit this im Handler auf das korrekte Element zeigt, zudem wird das Event-Objekt übergeben. Ansonsten würde return oldHandler() ausreichen.
Mathias