Marcus: Event-Handler vs. HREF

Beitrag lesen

Liebe Runde,

ein Skript soll prüfen, ob seit dem Laden der Seite Änderungen an Formularfeldern vorgenommen wurden, und den Benutzer ggf. davor warnen ohne diese Änderungen zu speichern, weiter zu navigieren.

Die Prüfung klappt, der confirm Dialog kommt auch, nach Abbruch wird der HREF aber trotzdem "ausgeführt".

Meine Vermutung ist nun, dass das "hochgebubblete" onclick event auf BODY-Ebene einfach schon zu spät erfasst wird, man den Vorgang also nur während der capture Phase abfangen könnte.

Die m.W. dafür notwendige Methode addEventListener() wird aber v.a. vom IE noch nicht vernünftig unterstützt.

Hat jemand einen Tipp?
Herzlichen Dank!!
Marcus

Der Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
 <title>Untitled</title>
<script>
var j = "";

function getStatus() {
var iMax = document.getElementsByTagName("input").length;
for (var i = 0; i < iMax; i++)
 {
 j = j + document.getElementsByTagName("input")[i].value;
 }
}

function getClick(objectType) {
var t = mouseEventHandler(objectType);
var k = j;
if (t == "A")
 {
 j = "";
 getStatus();
 if (j != k)
  {
  Check = confirm("Deine Angaben sind nicht gespeichert! Willst Du wirklich ohne zu speichern wechseln?");
  if (Check == false)
  return false;
  }
 }
}

function mouseEventHandler(mEvent)
{
    // Internet Explorer
  if (mEvent.srcElement)
  {
    return(mEvent.srcElement.nodeName);
  }
  // Firefox
  else if (mEvent.target)
  {
    return(mEvent.target.nodeName);
  }
}

</script>

</head>

<body onclick="getClick(event);" onload="getStatus();">
<br>
<a href="http://www.google.de">testdiv1</a><br>
                <form method="post" action="#">
                  <p>
                    <b></b><br>
                    <input type="text" name="suchausdruck" id="suchausdruck" size="10" maxlength="50">
                    <input type="hidden" name="feld" value="alle">
                  </p>
                </form>
</body>
</html>