Alex: "X Zeichen übrig" aus IFrame

Hallo (mal wieder),

wenn doch nur dieses Javascript nicht wäre - dann wär die Welt so einfach.

Ich habe einen recht schönen - einfachen - WYSIWYG Editor gebaut. Der soll jetzt noch Idiotensicher gemacht werden.
Diesmal geht es darum, dass ich dem User anzeigen will, wie viele Zeichen er noch übrig hat/bzw wie viele er schon verbraucht hat.

In meiner Firefox version (mit textarea und vorschaufeld / ohne deignmode) klappt alles wunderber. Die funktion wird per "onkeyup" nach jedem loslassen einer taste Aufgerufen und schreibt unten drunter, wie vieleZeichen verbraucht wurden.

Jetzt habe ich auch eine funktionierende funktion für IE (mit iframe und designmode) nur das mit dem onkeyup geht nicht.
Im <iframe> geht es nicht, im <div> um den iframe geht es nicht, im <body> des iframes geht es nicht.

Habe es jetzt so gelöst:
setTimeout("anzahl_zeichen('"+feld+"')",500);
Die funktion wird das erste mal geladen wenn man über das DIV fährt, in dem der iframe ist. Dann wird sie immer wiederholt.
Nur wirkt sich das ein bisschen auf die CPU Auslastung aus. Jetzt ist sie nach dem funktionsaufruf ca. bei 20 (vorher 9)%. Das ist schon viel besser im verlgeich zu vorher (da hatte ich fast 100$ bei einem Timeout von nur 100)

Vielleicht hat von euch jemand eine Idee?
Oder denk ihr das ist so OK?

gruß
Alex

  1. Hi

    Im <iframe> geht es nicht, im <div> um den iframe geht es nicht, im <body> des iframes geht es nicht.

    und in der Textarea?

    gruss

    lightfly

    1. Hey,

      in der textarea geht es ohne probleme weil ich da ja  onkeyup="" benutzen kann um meine Funktion aufzurufen.

      Bei der IFrame Methode fällt mir jetzt aber nichts mehr ein wo ich onkeyup="" probieren könnte.

      gruß
      Alex

  2. Hallo Alex,

    wenn doch nur dieses Javascript nicht wäre - dann wär die Welt so einfach.

    Nanana ;-)

    In meiner Firefox version (mit textarea und vorschaufeld / ohne deignmode) klappt alles wunderber.

    Firefox unterstützt aber auch den designmode. wieso bekommt er nur ne einfache Area?

    Jetzt habe ich auch eine funktionierende funktion für IE (mit iframe und designmode) nur das mit dem onkeyup geht nicht.

    Mit [code=javascript]onpropertychange = foo[/code] konnte ich dem IE gerade ein paar alerts entlocken. Zugegeben, nicht bei jedem Tastendruck aber bestimmte Interaktionen scheinen zu gehen. Hast Du damit mal ein wenig probiert?

    Mit freundlichem Gruß
    Micha

    Btw: ich habe im Opera ein kleines Problem mit Deinem Forum. Kannst Du mir hier vll weiterhelfen?

    1. Hallo Alex,

      »»
      Hallo Micha

      In meiner Firefox version (mit textarea und vorschaufeld / ohne deignmode) klappt alles wunderber.
      Firefox unterstützt aber auch den designmode. wieso bekommt er nur ne einfache Area?

      Hm, ja....das weis ich auch nicht mehr so genau;)
      Habe erst nur mit der area angefangen, dann hat das in IE nicht so geklappt und ich mussste es neu machen, derweil habe ich dann vom design mode gehört und es eben gleich dafür geschrieben.
      FF design mode kommt noch wenn ich mal wieder zeit dafür habe.
      Javascritp raubt mir immer so schnell die Nerven ich in glücklicher wenn ich ellenlange PHP Scripts schreibe ;)

      Jetzt habe ich auch eine funktionierende funktion für IE (mit iframe und designmode) nur das mit dem onkeyup geht nicht.
      Mit onpropertychange = foo konnte ich dem IE gerade ein paar alerts entlocken. Zugegeben, nicht bei jedem Tastendruck aber bestimmte Interaktionen scheinen zu gehen. Hast Du damit mal ein wenig probiert?

      Das werde ich doch gleich mal ausprobieren! Wo tue ich das denn am besten rein? In den <iframe> Tag?

      Mit freundlichem Gruß
      Micha

      »»
      Beste grüße,
      Alex

      Btw: ich habe im Opera ein kleines Problem mit Deinem Forum. Kannst Du mir hier vll weiterhelfen?

      Wieso mit MEINEM? Das ist doch dein Forum oder?!?
      Habe es mir aber trotzdem mal durchgelesen und weis leider auch keinen rat...

      1. Hallo Alex,

        Hm, ja....das weis ich auch nicht mehr so genau;)

        ich meine, dass es sich hierbei im identische Implementierungen handelt. Die Mozillaseite bzw das dortige Projekt hilft Dir ggf. weiter: http://www.mozilla.org/editor/midasdemo/

        Jetzt habe ich auch eine funktionierende funktion für IE (mit iframe und designmode) nur das mit dem onkeyup geht nicht.
        Mit onpropertychange = foo konnte ich dem IE gerade ein paar alerts entlocken.
        Das werde ich doch gleich mal ausprobieren! Wo tue ich das denn am besten rein? In den <iframe> Tag?

        Ich hatte es im Script eingefügt, nachdem ich den Design-Modus aktiviert hatte:

        document.getElementById("edit").contentWindow.document.onpropertychange = function(e) { window.alert("Bing"); }

        Er reagiert, wie schon gesagt, nicht auf alle interaktionen. Möglich, das es Dich gar nicht weiterbringt! Bei meinem Test war es so, da er auf "Fokus" reagierte. Hatte der diesen, tat er nichts. Formatziert man aber Text, klickt man ja einen Button, so dass das Frame kurzzeitig den Fokus verlor.

        Nun habe ich bemekrt, das folgendes funktioniert:

          
        document.getElementById("edit").contentWindow.document.onkeydown = function(e) { window.alert("BING2"); }
        

        Wieso mit MEINEM? Das ist doch dein Forum oder?!?

        Entweder ich verwechsle Dich oder Du nimmst es sehr genau ;-) Machen wir die Probe: Deine Seite und Deine Software? Wenn Nein, vergiss, das ich Dich belästigt habe.

        Mit freundlichem Gruß
        Micha

        1. Hallo Alex,

          Hm, ja....das weis ich auch nicht mehr so genau;)
          ich meine, dass es sich hierbei im identische Implementierungen handelt. Die Mozillaseite bzw das dortige Projekt hilft Dir ggf. weiter: http://www.mozilla.org/editor/midasdemo/

          Echt? Werde ich mir glaube ich morgen mal genauer anschauen!
          Aber ich habe auch im IE nicht diese standard design mode-text-formatier Funktionen genommen - ich glaube weil ich eben schon alles von hand zumindest angefangen habe...oder hatte ich doch einen besseren Grund? - Ist schon eine Weile her...

          Ich hatte es im Script eingefügt, nachdem ich den Design-Modus aktiviert hatte:

          document.getElementById("edit").contentWindow.document.onpropertychange = function(e) { window.alert("Bing"); }

          »»
          Entschuldigung wenn die Frage jetzt blöd klingt. Aber wo genau füge ich das ein? Also ich habe meine Administrations-Seite, darin einen IFRAME und in der Admin-Seite wird ein  .js mit den formatierungs-funktionen geladen.
          Außerdem wird dann beim IE alle 500 Milisekunden und beim FF onkeyup die Zeichenzähl-Funktion aufgerufen.

          Er reagiert, wie schon gesagt, nicht auf alle interaktionen. Möglich, das es Dich gar nicht weiterbringt! Bei meinem Test war es so, da er auf "Fokus" reagierte. Hatte der diesen, tat er nichts. Formatziert man aber Text, klickt man ja einen Button, so dass das Frame kurzzeitig den Fokus verlor.

          Nun habe ich bemekrt, das folgendes funktioniert:

          document.getElementById("edit").contentWindow.document.onkeydown = function(e) { window.alert("BING2"); }

          »»  
          Auch wenn es nicht klappen sollte- Probieren werde ich es gerne - sofern du bereit bist meine Frage^^ zu beantworten ;) - dann lerne ich wneigstens noch was!  
          
          >   
          > Entweder ich verwechsle Dich oder Du nimmst es sehr genau ;-) Machen wir die Probe: [Deine Seite und Deine Software](http://mylittleforum.net/)? Wenn Nein, vergiss, das ich Dich belästigt habe.  
          
          »»  
          Nein, ist leider nicht meine Seite/Software. Habe zwar mal mit einem Forum angefangen aber es nie so weit gebracht. Jetzt muss ich mich dafür mit meinem auf besondere Bedürfnisse angepasstem CMS und Firmen-Prozess-Abwicklungstool (klingt das nicht toll?!?) herumärgern. Aber das Ende des - ersten - Tunnels ist in sicht!  
            
          
          >   
          > Mit freundlichem Gruß  
          
          Freundliche Grüße aus München zurück,  
          Alex  
            
          PS: Achja, auch wenn das nicht mein Forum ist fühle ich mich nicht belästigt;)
          
          1. Hallo Alex,

            Entschuldigung wenn die Frage jetzt blöd klingt. Aber wo genau füge ich das ein?

            Ich habe es im Script eingefügt:

              
            <script type="text/javascript">  
              
            function init(){  
             var frm = null;  
              
             if (!(frm = document.getElementById("edit")))  
              return;  
              
             try {  
              frm.contentWindow.document.designMode = "on";  
             }  
             catch (err) {  
              window.alert("Dein Browser unterstützt designMode nicht\n"+err);  
             }  
              
              
             frm.contentWindow.document.onpropertychange = function(e) {  
              window.alert("Event-Handler onpropertychange);  
             }  
             frm.contentWindow.document.onkeydown = function(e) {  
              window.alert("Event-Handler onkeydown);  
             }  
            }  
              
            window.onload = init;  
            </script>
            

            Mit freundlichem Gruß
            Micha

            1. Hallo Micha,

              Die alerts natürlich mit Anführungszeichen:

              frm.contentWindow.document.onpropertychange = function(e) {
                window.alert("Event-Handler onpropertychange");
              }
              frm.contentWindow.document.onkeydown = function(e) {
                window.alert("Event-Handler onkeydown");
              }
              }
              </script>

                
                
                
              Mit freundlichem Gruß  
              Micha
              
              -- 
              [LeagueEditor JavaScript](http://leagueeditor.derletztekick.com) || [Spannung](http://derletztekick.com/), [Spaß](http://derletztekick.com/service/MineSweeper) und [S...](http://derletztekick.com/software)