Christoph Zurnieden: Portabilität im DOM-Bereich

Hallo Zusammen,

da mir leider auf die Schnelle nicht der zum Testen erforderliche Browserzoo zur Verfügung steht, erlaube ich mir mal die Frage, welche der beiden Methoden eine externe Datei (nach) zu laden portabler ist: durch Änderung des "src" Attributes des "link" Elementes, also Laden einer Javascript-Datei, oder durch Änderung des gleichnamigen Attributes im "iframe" Element (bzw den Nachbau mit Layern für den alten Netscape), also durch Laden einer HTML-Datei?

Mir sind alle anderen Methoden ebenfalls bekannt, bevor jemand mich darauf hinweisen möchte, nur ist deren Portabilität auch im Netz ermittelbar, deswegen würde ich niemanden belästigen wollen. Zum obigem Thema habe ich jedoch leider nichts gescheites gefunden. Ich wäre daher für jeden Hinweis, Link oder Erfahrungsbericht dankbar.

BTW: Nachfragen nach dem eigentlichen Problem, wie ich das bei anderen gerne mache sind auch zwecklos: es ist im Augenblick noch eine rein akademische Übung; das ich es nicht weiß _ist_ also genau das Problem, weitere gibt es nicht ;-)

so short

Christoph Zurnieden

  1. Hallo Christoph,

    als Erfahrungsbericht kann ich Dir das Arbeiten mit dem <iframe>-Element anraten. Zum einen wird dieses Element von sehr vielen Browsern schon sehr lange interpretiert, zum anderen ist die Implementierung von javascriptgestützen Zugriffen auf Dokumente paralleler Instanzen und auf deren Eigenschaften selbst erheblich verbreiteter. Sie bietet dabei (bei validen Dokumenten) mit etwas mehr Aufwand gleiche Kompfotablität wie das XMLHttpRequest Objekt, und ist erhelblich abwärts kompatibler.

    Ein Beispiel, was vor Version 7.5(?) des "heißgeliebten" Operas nicht funktioniert:

      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
    <html>  
    <head>  
    <title>Test JS - Grundfunktion</title>  
      
    <script type="text/javascript">  
    
    ~~~~~~javascript
      
    var script;  
      
    function daten_lader()  
     {  
     script = document.createElement("script");  
      
     script.src  = "grund.js";  
     script.type = "text/javascript";  
      
     document.getElementsByTagName("head")[0].appendChild(script);  
     }  
    
    ~~~~~~html
      
    </script>  
      
    </head>  
    <body>  
     <div>  
      <a href="#" onClick="daten_lader()">Funktioniert es?</a>  
     </div>  
    </body>  
    </html>  
    
    

    grund.js:

      
    alert("Es funktioniert!");  
    
    

    ##################################

    Opera würde aber ohne Probleme ein targetName.location.replace() und targetName.document.getElementByTagName() interpretieren.

    Gruß aus Berlin!
    eddi

    1. Hi,

      Ein Beispiel, was vor Version 7.5(?) des "heißgeliebten" Operas nicht funktioniert:

      Naja, den ganzen Knoten wollte ich nicht bauen, nur die Quelle des Scripte verändern also den Pfad dahin.
      Aber trotzdem interessant zu erfahren, danke.

      Opera würde aber ohne Probleme ein targetName.location.replace() und targetName.document.getElementByTagName() interpretieren.

      Ändern geht also generell? Auch das "src" Attribut im "script" Elelement?

      Allerdings hat der Kollege Jörg --  Dank an ihn mal gleich von hier aus -- schon davon gesprochen, das ältere Netscapes damit wohl Schwierigkeiten hätten. Da funktioniert jedoch die iframe-Methode. Zwar nur als Übersetzung in Layer, aber immerhin.

      so short

      Christoph Zurnieden

      1. Moin,

        Opera würde aber ohne Probleme ein targetName.location.replace() und targetName.document.getElementByTagName() interpretieren.

        Ändern geht also generell? Auch das "src" Attribut im "script" Elelement?

        Allerdings hat der Kollege Jörg --  Dank an ihn mal gleich von hier aus -- schon davon gesprochen, das ältere Netscapes damit wohl Schwierigkeiten hätten. Da funktioniert jedoch die iframe-Methode. Zwar nur als Übersetzung in Layer, aber immerhin.

        Nicht nur alte Netscapes spucken Dir in die Suppe, auch neuere Operas und insbesondere der Konqueror(lant). Was also die Frage nach _generell_ angeht, muß Du von vorwiegender Zwecklosigkeit ausgehen im Gegensatz zu der Framelösung und deren Möglichkeit von targetName.functions_name().

        Gruß aus Berlin!
        eddi

        1. Hi,

          Nicht nur alte Netscapes spucken Dir in die Suppe, auch neuere Operas und insbesondere der Konqueror(lant).

          Naja, dn Konqueror könnt' ich ja zumindest auch noch selber reparieren ;-)

          Was also die Frage nach _generell_ angeht, muß Du von vorwiegender Zwecklosigkeit ausgehen im Gegensatz zu der Framelösung und deren Möglichkeit von targetName.functions_name().

          Ja, dsa ist mir ehrlich gesagt ganz lieb, da ich das nämlich alles schon drauf ausgerichtet habe ;-)

          Auf jeden Fall natürlich: besten Dank an alle Beteiligten!

          so short

          Christoph Zunrieden

  2. Tag,
    Wenn ich mich richtig erinnere, gabs bei einigen Browsern (speziell alte Netscapes) Probleme, eine JavaScript-Quelle (die also mittels script src oder link src eingebunden wurde) nachträglich zu verändern.
    => Die (I)frame-Lösung ist im Zweifelsfall robuster.

    Viele Grüße,
    Jörg

  3. hi,

    durch Änderung des "src" Attributes des "link" Elementes, also Laden einer Javascript-Datei

    du einbinden externe javascript über <link>?
    ich immer dachten, geht nur mit <script src=...>

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      du einbinden externe javascript über <link>?
      ich immer dachten, geht nur mit <script src=...>

      Deshalb ja auch meine Frage ;-)

      Ich weiß aber auch nicht, was mich da geritten hat "link" mit "script" zu verwechseln. Das ist schon die zweite Fehlleistung in diesem Monat; ich befürchte, das ich mal wieder urlaubsreif bin ;-)

      so short

      Christoph Zurnieden