Juergen: Iframe Event

Moin!

Ich hab ne blank.html die contenteditable ist und designMode "on" hat. Diese Verwende ich dann als Iframe zum Zwecke eines WYSIWYG-Editors.

In dieser ist es ziemlich schwierig Events für beide Browser abzufangen.

Entweder man braucht das:

====================================================================

if(document.addEventListener)
{
 document.addEventListener("click", focussing, true);
}

(fuer IE)

oder man muss es ins <body>-Tag schreiben. (fuer Moz)

====================================================================

Diese beiden Möglichkeiten haben für einige Events ganz gut funkitoniert. Leider klappt es nicht für "onmousedown".
Gibt es da ein bestimmtes Event was vom Iframe unterstützt wird? Oder geht Mousedown/Up gar nicht? (ging in beiden nicht, IE und MOZ)

  1. Habe es geschafft meine Funktion ausführen zu lassen, auf mousedown.

    Ziel dieser Funktion ist es das contextmenu zu blocken:

    =====================================================================
    function onMouseDownListener(e)
    {
     var message = "Bitte f"+String.fromCharCode(252)+"gen Sie Ihren Texte mit der vorgesehenen Knopf oder mit STRG+V ein.";

    if (navigator.appName == 'Netscape' && e.which == 3)
     {
      alert(message);
      return false;
     }
     else
     if (navigator.appName == 'Microsoft Internet Explorer' && event.button==2)
     {
      alert(message);
      return false;
     }

    return true;
    }

    =====================================================================

    Nun hab ich folgendes Problem, dass zwar die Nachricht kommt, aber im FireFox das contextmenu trotzdem angezeigt wird. Jemand ne Idee?

    1. Habe es geschafft meine Funktion ausführen zu lassen, auf mousedown.

      Das ist gut.

      aber...

      function onMouseDownListener(e)
      {
      var message = "Bitte f"+String.fromCharCode(252)+"gen Sie Ihren Texte mit der vorgesehenen Knopf oder mit STRG+V ein.";

      Du kannst hier sorglos ein 'ü' schreiben

      if (navigator.appName == 'Netscape' && e.which == 3)

      ...

      if (navigator.appName == 'Microsoft Internet Explorer' && event.button==2)

      Du stellst einen Zusammenhang her der nicht existiert, in appName steht ein beliebiger String (bei mir z.b. oft die URL meiner Webseite).

      Einfach das testen was du nutzen möchtest
      if(
      (e && e.which == 3)
      ||
      (event && event.button == 2)
      )

      {
        alert(message);
        return false;
      }

      Nun hab ich folgendes Problem, dass zwar die Nachricht kommt, aber im FireFox das contextmenu trotzdem angezeigt wird. Jemand ne Idee?

      Entweder du hast deinem FF explizit nicht erlaubt das Kontextmenü zu unterdrücken (kann ich verstehen, würd mich auch nerven wenn mir ein wichtiges Werkzeug weggenommen wird) oder du musst den den Event stoppen.

      Struppi.