dp: On-Demand Javascript

Hi,

ich wollte mal eure Meinung zu "On-Demand Javascript" hören oder lesen. Ich frickel schon seit Tagen an einer kleiner AJAX-Engine herum und komme nicht richtig voran bzw. stoße ich immer wieder auf neue Probleme. Als AJAX-Alternative könnte man ja auch On-Demand Javascript verwenden. Das hätte den Vorteil, dass jeder DOM-fähige Browser Daten asyncron beziehen kann. Bei AJAX ala HTTPRequest kann man den IE in die Tonne treten und den Safari mehr oder weniger gleich mit. Eine AJAX-Lösung über ein IFrame ist mehr als suboptimal, daher kommt mir On-Demand Javascript gerade recht. Außerdem könnte ich den neu ausgelieferten JavaScript mit PHP auf dem Server dynamisch erzeugen, nicht nur XML-Daten zurückgeben; rießengroße Scripte können ausgelagert werden bzw. nur benötige Teile zur Verfügung gestellt werden und und und ... Also mir fallen nur Vorteile ein, aber gibt es Nachteile? Abgesehen von der Tatsache, dass nicht DOM-fähige Browser außen vor stehen...

Gruß
Daniel

  1. hi,

    ich wollte mal eure Meinung zu "On-Demand Javascript" hören oder lesen.

    Was ich da über google auf die Schnelle finde, sieht nach AJAX-Nachbastelei für Arme (bzw. für ältere Browser) aus.

    Bei AJAX ala HTTPRequest kann man den IE in die Tonne treten

    Wieso das?

    und den Safari mehr oder weniger gleich mit.

    Wieso das?

    Eine AJAX-Lösung über ein IFrame ist mehr als suboptimal, daher kommt mir On-Demand Javascript gerade recht. Außerdem könnte ich den neu ausgelieferten JavaScript mit PHP auf dem Server dynamisch erzeugen, nicht nur XML-Daten zurückgeben; rießengroße Scripte können ausgelagert werden bzw. nur benötige Teile zur Verfügung gestellt werden und und und ...

    Also mir fallen nur Vorteile ein, aber gibt es Nachteile?

    Mir sind in der bisherigen Aufzählung noch gar keine wirklichen Vorteile aufgefallen.
    Ja gut, damit würdest du einen AJAX-ähnlichen Effekt auch in älteren Browsern realisieren können - aber wozu?
    Der Fallback für ältere Browser heißt m.E. HTML, und nicht Gebastel.

    Was du daran vorteilhaft findest, kein XML zurückliefer zu "müssen", leuchtet mir nicht ein.

    Abgesehen von der Tatsache, dass nicht DOM-fähige Browser außen vor stehen...

    Die dürfen sich in der selben Schlange einreihen, in der auch nicht-AJAX-Browser stehen - Fallback über HTML und entsprechende serverseitige Logik.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Was ich da über google auf die Schnelle finde, sieht nach AJAX-Nachbastelei für Arme (bzw. für ältere Browser) aus.

      Wieso Nachbastelei - es ist einfach nur ein anderer Weg. Oder willst du sagen, dass ein Elektroauto eine billige Nachbastelei eines Benziners ist ;-)

      Bei AJAX ala HTTPRequest kann man den IE in die Tonne treten

      Wieso das?

      Weil der IE (bis Version 6) den HTTPRequest nur über ActiveX realisieren kann bzw. das Objekt, das hierfür benötigt wird. Und ActiveX haben die meisten abgeschaltet...

      und den Safari mehr oder weniger gleich mit.

      Wieso das?

      Weil der zwar den HTTPRequest kann, aber Probleme bei der richtigen Ausgabe von "readyState" und "status" hat. Gibt manchmal "0" und "undefined" zurück. Das Problem ist bekannt, aber noch nicht behoben :-(

      Ja gut, damit würdest du einen AJAX-ähnlichen Effekt auch in älteren Browsern realisieren können - aber wozu?

      S. o. - "ältere" Browser wie der IE 6 können wie gesagt kein native AJAX und das Problem mit dem Safari zwingt mich in eine "für2BrowserProgrammierung". Eine für Safari und eine für den Rest und sowas gefällt mir gar nicht. Ich habe es in JS bisher immer so gehandelt, dass meine Scripte in jedem Browser zu gleichen Ergebnissen fürhren und das würde ich mit On-Demand Javascript auch gerne machen. DOM kann jeder Browser uns somit kann ich auch Daten asyncron nachladen.

      Der Fallback für ältere Browser heißt m.E. HTML, und nicht Gebastel.

      Bei mir "Pech gehabt". Wer mit Uralt-Browsern herumsurft erntet bei mir nur Kopfschütteln ;-) . Alles und jede Möglichkeit kann man nicht abdecken, man hat schließlich seine "Zielgruppe" und die sollte mit den verwendeten "Spielereien" relativ groß bleiben.

      Was du daran vorteilhaft findest, kein XML zurückliefer zu "müssen", leuchtet mir nicht ein.

      So kann ich auch JavaScripte zurückgeben oder HTML-Teile (gut, ist auch irgendwo XML, mehr oder weniger). Man ist dann nicht mehr so eingeschränkt und kann sich ein paar Türen offen halten.

      Die dürfen sich in der selben Schlange einreihen, in der auch nicht-AJAX-Browser stehen - Fallback über HTML und entsprechende serverseitige Logik.

      Nicht ganz ... IE ... Safari ;-)

      Gruß
      Daniel

      1. Moin!

        Bei AJAX ala HTTPRequest kann man den IE in die Tonne treten

        Wieso das?

        Weil der IE (bis Version 6) den HTTPRequest nur über ActiveX realisieren kann bzw. das Objekt, das hierfür benötigt wird. Und ActiveX haben die meisten abgeschaltet...

        Bei "DEINEN" Besuchern? Oder bei "DEN" Besuchern?

        Ohne ActiveX geht im IE 6 sowieso fast nichts, was man typischerweise an Plugins etc. erwartet. Der IE 6 ist nun mal weit verbreitet. Und über Flash wird gesagt, es wäre ebenfalls extrem weit verbreitet und verfügbar (> 95%).

        Daraus folgt: Der IE 6 hat massenhaft aktiviertes ActiveX. Sonst würde Flash nicht gehen.

        Der Fallback für ältere Browser heißt m.E. HTML, und nicht Gebastel.

        Bei mir "Pech gehabt". Wer mit Uralt-Browsern herumsurft erntet bei mir nur Kopfschütteln ;-) .

        Aha, "alte Browser" treffen bei dir auf zuckende Schultern. Warum dann das Gehampel für den IE 6 (der wäre durch passende Einstellungen ja in der Lage zu AJAX) und für den Safari (deren Entwickler offenbar in den Bemühungen sind, letzte Bugs zu eliminieren)?

        Alles und jede Möglichkeit kann man nicht abdecken, man hat schließlich seine "Zielgruppe" und die sollte mit den verwendeten "Spielereien" relativ groß bleiben.

        Ganz genau! IE 6 ohne ActiveX (auch nach Aufforderung dazu, es einzuschalten) sind eben nicht deine Zielgruppe, genausowenig wie defekte Safaris.

        Und wenn du derartige Problembrowser bedienen willst, kannst du mit simplen HTML-Links und simplen einzelnen HTML-Seiten nicht nur IE6 ohne ActiveX und Safari bedienen, sondern sämtliche existierenden Browser inklusive Robots.

        - Sven Rautenberg

        --
        My sssignature, my preciousssss!
        1. Bei "DEINEN" Besuchern? Oder bei "DEN" Besuchern?

          Wo ist da der unterschied? ActiveX wird oft abgeschaltet, da es in der Vergangenheit immer wieder zu Sicherheitslecks kam. Wenn man sich mit AJAX ala HTTPRequest und seiner Browserkompatibiliät etwas auseinandersetzt kann man sowas immer wieder lesen. Es wird zwar gezeigt, wie man ein Objekt für einen HTTPRequest im IE erzeugt, aber oft mit der Bemerkung, dass es wahrscheinlich nicht geht, da die Benutzer es abgeschaltet haben.

          Ohne ActiveX geht im IE 6 sowieso fast nichts, was man typischerweise an Plugins etc. erwartet. Der IE 6 ist nun mal weit verbreitet. Und über Flash wird gesagt, es wäre ebenfalls extrem weit verbreitet und verfügbar (> 95%).

          verbreitet != verfügbar

          Daraus folgt: Der IE 6 hat massenhaft aktiviertes ActiveX. Sonst würde Flash nicht gehen.

          Also bei mir geht es schon mal nicht, da ich von der Laderei und dem Geblinke nicht viel halte. Und so geht IMHO vielen Usern...

          Aha, "alte Browser" treffen bei dir auf zuckende Schultern. Warum dann das Gehampel für den IE 6 (der wäre durch passende Einstellungen ja in der Lage zu AJAX) und für den Safari (deren Entwickler offenbar in den Bemühungen sind, letzte Bugs zu eliminieren)?

          Mir geht es nicht um einen Browser sondern um eine Unterstützung für möglichst viele Browser. Ich möchte eine Funktion basteln, die ohne mein Zutun auf einem Großteil der verfügbaren Browsern läuft. Da On-Demand Javascript nur DOM benötigt und das von allen aktuellen Browsern unterstützt wird, ist es für mich bzw. für meine Zielsetzung, ein relativ kompatibles AJAX zu haben, nahezu perfekt.

          Alles und jede Möglichkeit kann man nicht abdecken, man hat schließlich seine "Zielgruppe" und die sollte mit den verwendeten "Spielereien" relativ groß bleiben.

          Ganz genau! IE 6 ohne ActiveX (auch nach Aufforderung dazu, es einzuschalten) sind eben nicht deine Zielgruppe, genausowenig wie defekte Safaris.

          Erzähl das mal den Kunden, die mit den Features bereichert werden sollen bzw. früher oder später auch "so tolle Funktionen wie in Google-Maps, etc." haben wollen ;-)

          Und wenn du derartige Problembrowser bedienen willst, kannst du mit simplen HTML-Links und simplen einzelnen HTML-Seiten nicht nur IE6 ohne ActiveX und Safari bedienen, sondern sämtliche existierenden Browser inklusive Robots.

          Hm, zur Seitennavigation wollte ich AJAX eigentlich nicht verwenden. Eher für so nützliche Dinge wie Autovervollständigung für Formulare und ähnliches. Aber gerade diese "Frickellösungen" für zig Browser möchte ich vermeiden. Ich möchte eine Seite machen mit der möglichst viele Browser (zumindest alle aktuellen Versionen) umgehen können. Uuuund ich möchte gerne AJAX dafür verwenden, für die o. g. Features. Da das "echte" AJAX nicht geht, weil geringe Kompatibilität, suche ich nach alternativen. Und zu On-Demand Javascript wollte ich mal einfach eure Meinung hören - was dafür oder dagegen spricht, wie ihr darüber denkt...

          Gruß
          Daniel

          1. hi,

            Hm, zur Seitennavigation wollte ich AJAX eigentlich nicht verwenden. Eher für so nützliche Dinge wie Autovervollständigung für Formulare und ähnliches.

            Also lediglich kleine Komfort-Features, die bedenklos auch entfallen können.

            Aber gerade diese "Frickellösungen" für zig Browser möchte ich vermeiden.

            Dann frickle nicht, sondern nutze AJAX in den Browsern, in denen es geht - und lebe damit, dass ein paar Features von gegen Null gehender Wichtigkeit in anderen Browsern eben nichts zur Verfügung stehen.

            Ich möchte eine Seite machen mit der möglichst viele Browser (zumindest alle aktuellen Versionen) umgehen können.

            Mit AJAX umgehen können so gut wie alle aktuellen.
            In in Firefox/Mozilla, Opera und Safari kann ich AJAX ebenso "abschalten", wie es im IE auch möglich ist. In diese Richtung weiter zu argumentieren, verschwendet also m.E. nur deine und unsere Zeit.

            Uuuund ich möchte gerne AJAX dafür verwenden, für die o. g. Features.

            Dann tu das.

            Da das "echte" AJAX nicht geht,

            Es geht.

            weil geringe Kompatibilität,

            Die Kompabilität dürfte für die beschriebenen Einsatzszenarien vollkommen ausreichend sein.

            suche ich nach alternativen.

            Brauchst du nicht - du hast die bestmögliche Lösung bereits gefunden.

            Und zu On-Demand Javascript wollte ich mal einfach eure Meinung hören - was dafür oder dagegen spricht, wie ihr darüber denkt...

            Sinnloses Gebastel, um reichlich unelegant "Probleme" zu umschiffen, die bei objektiver Betrachtung eigentlich gar keine sind.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Also lediglich kleine Komfort-Features, die bedenklos auch entfallen können.

              Njein - sie sollten laufen...

              Aber gerade diese "Frickellösungen" für zig Browser möchte ich vermeiden.

              Dann frickle nicht, sondern nutze AJAX in den Browsern, in denen es geht - und lebe damit, dass ein paar Features von gegen Null gehender Wichtigkeit in anderen Browsern eben nichts zur Verfügung stehen.

              ... in allen Browsern mit _einer_ Lösung und nicht mit diesem "wenn das eine Objekt nicht da ist, dann nimm das andere oder mach sonst was und wenn du der xyz-Browser bist, mach dies und jenes". Gefällt mir einfach nicht :-(

              Ich möchte eine Seite machen mit der möglichst viele Browser (zumindest alle aktuellen Versionen) umgehen können.

              Mit AJAX umgehen können so gut wie alle aktuellen.
              In in Firefox/Mozilla, Opera und Safari kann ich AJAX ebenso "abschalten", wie es im IE auch möglich ist. In diese Richtung weiter zu argumentieren, verschwendet also m.E. nur deine und unsere Zeit.

              Mir ist gerade was klar geworden, als ich mir noch mal den Wikipedia-Artikel zu AJAX durchgelesen habe (http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29#Der_Aufbau_einer_Ajax-Anwendung). Zur asyncronen Datenübertragung gibt es zwei Wege:

              • per HTTPRequest
              • per DOM

              Da nur die DOM-Methode in allen Browsern problemlos läuft, brauche ich nach "Alternativen" gar nicht suchen, weil's gar keine anderen Möglichkeiten gibt - außer IFrame.

              Die Kompabilität dürfte für die beschriebenen Einsatzszenarien vollkommen ausreichend sein.

              Leider nein, denn...

              Sinnloses Gebastel, um reichlich unelegant "Probleme" zu umschiffen, die bei objektiver Betrachtung eigentlich gar keine sind.

              ... das "sinnlose" Gebastel ist nötig, da auf unseren System Safari und der IE zu 100% unterstützt werden müssen und da kann ich als Entwickler nicht einfach sagen "wartet bis die Bugs behoben sind oder benutzt einen anderen Browser". Ich verstehe auch nicht ganz, was daran sinnlos sein soll. Wenn ich bedenke, dass ein HTTPRequest locker 20 Zeilen Code braucht und die DOM-Methode gerade mal 5 und auch im debuggen um einiges einfacher ist - zumindest jetzt beim Testen. Ich glaube unsere Diskussion ist etwas in die falsche Richtung gelaufen. Vielleicht sollte es besser "pro/contra HTTPRequest/DOM" heißen anstatt Alternativen...

              Gruß
              Daniel

          2. Moin!

            Bei "DEINEN" Besuchern? Oder bei "DEN" Besuchern?

            Wo ist da der unterschied?

            "DEINE" Besucher sind die, die du in deiner eigenen Statistik erfaßt hast. Und "DIE" Besucher sind die anonyme Masser der Internetbenutzer, über die man eigentlich gar keine statistischen Aussagen machen kann, weil sie sich sowieso von "DEINEN" Besuchern unterscheiden.

            ActiveX wird oft abgeschaltet, da es in der Vergangenheit immer wieder zu Sicherheitslecks kam.

            Ich hab Neuigkeiten für dich: Javascript oder JScript wird auch oft abgeschaltet, da es (lies einfach mal ein paar Sicherheitshinweise von Microsoft) in der Vergangenheit immer wieder zu Sicherheitslecks kam - und darüber hinaus auch zu diversen Benutzernervkramereien beiträgt.

            Wenn man sich mit AJAX ala HTTPRequest und seiner Browserkompatibiliät etwas auseinandersetzt kann man sowas immer wieder lesen. Es wird zwar gezeigt, wie man ein Objekt für einen HTTPRequest im IE erzeugt, aber oft mit der Bemerkung, dass es wahrscheinlich nicht geht, da die Benutzer es abgeschaltet haben.

            Dasselbe muß man sowieso für alles sagen, was Javascript angeht: Es könnte nicht funktionieren, weil der Benutzer es abgeschaltet hat.

            Insofern gibt es eigentlich nur zwei Alternativen: Entweder baust du ein Feature, welches wirklich unverzichtbar Javascript und XMLHttpRequest voraussetzt - dann hat der IE-Benutzer eben ActiveX und Javascript zu aktivieren.

            Oder du bietest diese Features nur additiv zu einer normalen HTML-Seite an, die für sich genommen auch ohne ActiveX und Javascript "läuft" - zwangweise dann etwas anders läuft und reagiert, als mit, aber immerhin die Informationen zur Verfügung stellt.

            Also bei mir geht es schon mal nicht, da ich von der Laderei und dem Geblinke nicht viel halte. Und so geht IMHO vielen Usern...

            Dein Pech. Vielleicht solltest du statt des IE 6 dann aber noch besser einen anderen Browser nehmen, der es dir erlaubt, außer dem ActiveX-Geblinke noch viel mehr abzuschalten. Oder der es erlaubt, selektiv je Domain derartige Einstellungen vorzunehmen.

            Mir geht es nicht um einen Browser sondern um eine Unterstützung für möglichst viele Browser.

            Dann wie gesagt: Eine reine HTML-Version ist Pflicht für alle Browser, die Javascript ausgeschaltet haben - und deshalb steht diese Version dann auch für alle Browser zur Verfügung, die mit AJAX ein Problem haben.

            - Sven Rautenberg

            --
            My sssignature, my preciousssss!
            1. "DEINE" Besucher sind die, die du in deiner eigenen Statistik erfaßt hast. Und "DIE" Besucher sind die anonyme Masser der Internetbenutzer, über die man eigentlich gar keine statistischen Aussagen machen kann, weil sie sich sowieso von "DEINEN" Besuchern unterscheiden.

              Hää? Besucher ist Besucher. Egal ob er in meiner "Statistik" auftaucht oder nicht. Sobald jemand meine Seite aufruft, ist er automatisch Besucher und unterscheidet sich nicht von anderen Besuchern. Warum auch?

              ActiveX wird oft abgeschaltet, da es in der Vergangenheit immer wieder zu Sicherheitslecks kam.

              Ich hab Neuigkeiten für dich: Javascript oder JScript wird auch oft abgeschaltet, da es (lies einfach mal ein paar Sicherheitshinweise von Microsoft) in der Vergangenheit immer wieder zu Sicherheitslecks kam - und darüber hinaus auch zu diversen Benutzernervkramereien beiträgt.

              Echt? Das höre ich jetzt zum ersten mal. Ich glaube wir reden an aneinander vorbei. Ich würde gerne _ein_ ... E I N JavaScript verwenden, der auf allen Browsern gleich läuft. Dieser Script soll keine Browserweichen enthalten ala "wenn normales HTTPRequest nicht verfügbar ist verwende ActiveX". Ich darf keine Browser ausschließen (zumindest von den Verbreitesten) und daher kommt mir ODJS gerade recht. DOM kann jeder neue Browser und wenn JS abgeschaltet, dann kann ich auch nichts dafür. Aber ich möchte _keine_ Einzelbrowserprogrammierung betreiben und schon gar nicht auf irgendwelche nicht Standard-PlugIns ausweichen, die in 2, 3 Jahren eh nicht mehr existieren, sondern nur Sachen verwenden, die jeder Browser native unterstützt.

              Insofern gibt es eigentlich nur zwei Alternativen: Entweder baust du ein Feature, welches wirklich unverzichtbar Javascript und XMLHttpRequest voraussetzt - dann hat der IE-Benutzer eben ActiveX und Javascript zu aktivieren.

              Nein, ich verwende statt HTTPRequest einfach DOM und bin damit auch noch flexibler, was die Datenanforderung und -verarbeitung angeht. Außerdem schließe ich so die Bugs mit dem Safari aus.

              Oder du bietest diese Features nur additiv zu einer normalen HTML-Seite an, die für sich genommen auch ohne ActiveX und Javascript "läuft" - zwangweise dann etwas anders läuft und reagiert, als mit, aber immerhin die Informationen zur Verfügung stellt.

              Das ist sowieso klar ;-)

              Also bei mir geht es schon mal nicht, da ich von der Laderei und dem Geblinke nicht viel halte. Und so geht IMHO vielen Usern...

              Dein Pech. Vielleicht solltest du statt des IE 6 dann aber noch besser einen anderen Browser nehmen, der es dir erlaubt, außer dem ActiveX-Geblinke noch viel mehr abzuschalten. Oder der es erlaubt, selektiv je Domain derartige Einstellungen vorzunehmen.

              Wer hat gesagt, dass ich den IE verwende oO. Meine Zielgruppe verwendet den unter anderem und nicht ich. Ich muss mit dem nur Testen...

              Dann wie gesagt: Eine reine HTML-Version ist Pflicht für alle Browser, die Javascript ausgeschaltet haben - und deshalb steht diese Version dann auch für alle Browser zur Verfügung, die mit AJAX ein Problem haben.

              Mit AJAX selbst nicht; wohl aber mit dem HTTPRequest ;-)

              Gruß
              Daniel

        2. Hi,

          Daraus folgt: Der IE 6 hat massenhaft aktiviertes ActiveX. Sonst würde Flash nicht gehen.

          Es ist kein Problem als MS-Admin den IE so einzurichten, daß ActiveX (und damit Ajax) verboten ist, Flash aber trotzdem geht.

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Moin!

            Daraus folgt: Der IE 6 hat massenhaft aktiviertes ActiveX. Sonst würde Flash nicht gehen.

            Es ist kein Problem als MS-Admin den IE so einzurichten, daß ActiveX (und damit Ajax) verboten ist, Flash aber trotzdem geht.

            Um dem Thread noch einen sinnvollen Inhalt zu geben: Wie geht das denn? Flash ist doch im IE nur als ActiveX möglich.

            Beziehungsweise: Wenn es möglich ist, ein selektives ActiveX zu erlauben, warum dann nicht auch die AJAX-Komponente?

            - Sven Rautenberg

            --
            My sssignature, my preciousssss!
            1. Hi,

              Wie geht das denn? Flash ist doch im IE nur als ActiveX möglich.

              Keine Ahnung - ich bin kein MS-Admin. =;-)

              Ich weiß "nur", *daß* es geht. 8-)

              Ich weiß auch, daß es nicht immer geht!

              Warum es in einem Fall geht in einem anderen nicht, habe ich aber nie untersucht - dies zu tun ist aber vielleicht keine schlechte Idee ... ;)

              ... allerdings mache ich selbst nichts mit Flash ...

              ... aber schaun mer mal. ;) Sobald es mir mal wieder auffällt, werde ich versuchen, es rauszufinden.

              Beziehungsweise: Wenn es möglich ist, ein selektives ActiveX zu erlauben

              Ob das möglich ist, da wäre ich mir wiederum gar nicht so sicher.

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!