JQuery Ajax Request in AdobeAir Browser-Control

Ich schrie heute ein paar Stunden auf einen Bildschirm ein, in dem eine Adobe Air Anwendung lief, die ihrerseits eine Webseite von mir darstellte. Nur leider wollte diese Webseite nicht so wie ich wohl wollte – zumindest nicht innerhalb des Adobe Air Browsers. Außerhalb lief die kleine Ajax-Login Methode auf jedem Browser dem ich sie zum Rendering vorwarf. Sicherheit und Manipulierbarkeit dieser Demo mal völlig außen vor gelassen, wollte ich Daten via JQuery Ajax an ein Skript schicken und bei Erfolg eine Aktion durchführen. Leider blieb das Skript irgendwo hängen. Ohne Fehlermeldungen, ohne die Möglichkeit Adobe Air zu debuggen usw.

Nun bin ich heiser, habe aber den Übeltäter gefunden. Die kleine Zeile console.log(data), mit der ich während der Entwicklung die Rückgabewerte überprüfte, funktioniert zwar in jedem Browser, innerhalb Adobe Air jedoch nicht.

<script type="text/javascript">
  $("#loginFormSubmit").click(function(){  
    $.post(  
      "login.php",  
      {username: $("#loginFormUser").val(), password: $("#loginFormPassword").val()},  
      function(data){ 
        console.log(data);
        if(data.success == true)
        {
          [...]
        }
        else
        {      
          [...]
        }
     },  
     "json"  
    );  
  });  
</script>

Das ist natürlich richtig, denn console.log() ist eine Funktion, die von Firebug dem Browser hinzugefügt wird, bzw. bei einigen bereits mitgeliefert ist und somit manchmal nicht existiert und folglich einen Fehler werfen müsste. Warum klappt es dann aber in anderen Browsern wie Safari, Chrome oder Internet Explorer, in denen ich garantiert kein Firebug installiert hatte ohne zu murren? (siehe Kommentar von Sven) Um den Fehler in Zukunft zu umgehen definiere ich einen Workaround:

if(!console || !console.log) 
{
  console = {};
  console.log = function(txt) {  throw new Error(txt)  };
}

Done – wo sind die Valium?

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte dich auch interessieren …

2 Antworten

  1. Sven sagt:

    > Warum klappt es dann aber in anderen Browsern wie Safari, Chrome oder Internet Explorer

    Weil die meisten Browser mittlerweile ein console Obejekt bereitstellen 😉

    http://www.opera.com/dragonfly/documentation/console/
    https://developers.google.com/chrome-developer-tools/docs/console
    http://msdn.microsoft.com/en-us/library/ie/gg589530(v=vs.85).aspx

    usw.

    mfg Sven

Schreibe einen Kommentar zu Kolja Engelmann Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert