JürgenB: Wiki: Problem mit eingebundenen Skripten

problematische Seite

Hallo,

ich habe im Wiki eine Beispielseite mit eingebundenen Scripten. Diese werden in der Frickl-Ansicht nicht geladen.

Geht das prinzipiell nicht oder mache ich was falsch?

Wenn es nicht geht, kann man die Frickl-Ansicht umgehen und die Beispielsweise direkt ohne Rechtsklick (oder so) aufrufen?

Gruß
Jürgen

  1. problematische Seite

    Hallo JürgenB,

    ich habe im Wiki eine Beispielseite mit eingebundenen Scripten. Diese werden in der Frickl-Ansicht nicht geladen.

    Geht das prinzipiell nicht oder mache ich was falsch?

    Ich denke, das ist genau so gewollt. Genaueres kann @Felix Riesterer sagen.

    Wenn es nicht geht, kann man die Frickl-Ansicht umgehen und die Beispielsweise direkt ohne Rechtsklick (oder so) aufrufen?

    Genau so. (In neuem Fenster öffnen) Die Skripte müssen aber im Beispiel-Namensraum liegen.

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. problematische Seite

      Hallo Matthias,

      ich habe im Wiki eine Beispielseite mit eingebundenen Scripten. Diese werden in der Frickl-Ansicht nicht geladen.

      Geht das prinzipiell nicht oder mache ich was falsch?

      Ich denke, das ist genau so gewollt. Genaueres kann @Felix Riesterer sagen.

      dann warte ich mal, bis er wieder da ist.

      Wenn es nicht geht, kann man die Frickl-Ansicht umgehen und die Beispielsweise direkt ohne Rechtsklick (oder so) aufrufen?

      Genau so. (In neuem Fenster öffnen)

      Das ist aber nicht optimal, da der Klick auf „ansehen …“ ein nicht funktionierendes Beispiel zeigt.

      Die Skripte müssen aber im Beispiel-Namensraum liegen.

      Das tun sie.

      Gruß
      Jürgen

  2. problematische Seite

    Lieber JürgenB,

    eingebundenen Scripten. Diese werden in der Frickl-Ansicht nicht geladen.

    das ist so gewollt. Hier eine Lösung, die ich gerade mit der Frickl-Ansicht erfolgreich ausprobiert habe:

    "use strict";
    
    // load library
    (function () {
        var s = document.createElement("script");
        s.src = "/extensions/Selfhtml/example.php/Beispiel:JS-Anw-FktPlot-grafik_canvas.js";
        s.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(s);
    }());
    
    // setup
    window.addEventListener("load", function () { ... });
    

    Die Lösung besteht darin, das "load"-Event anstelle des "DOMContentLoaded"-Events zu verwenden, damit der Browser mit dem eigentlichen Script darauf wartet, bis alle Komponenten geladen worden sind und das SW-Objekt zur Verfügung steht. Zuvor habe ich mit einer IIFE ein passendes <script> in den <head> geschrieben, damit Deine Bibliothek in der Frickl-Vorschau tatsächlich verfügbar ist.

    Der Hintergrund zu der Entscheidung bei der Frickl-Umsetzung so vorzugehen ist der, dass externe Bibliotheken nicht einfach unsichtbar im Frickl verfügbar sein sollen, sondern dass ihr Vorhandensein im JavaScript-Code nachvollziehbar verursacht wird.

    Mir leuchtet jetzt nicht ein, warum ein Äquivalent mit jQuery zu obiger IIFE nicht funktioniert (das <script> wird korrekt eingefügt, aber die Bibliothek wird nicht geladen):

    $(
      '<script src="/extensions/Selfhtml/example.php/Beispiel:JS-Anw-FktPlot-grafik_canvas.js" type="text/javascript">'
    ).appendTo("head");
    

    Ebenso gelingt es nicht, die innerHTML-Eigenschaft zu "missbrauchen", die Bibliothek wird nicht geladen, obwohl das <script> korrekt ins DOM eingefügt wird:

    document.getElementsByTagName("head")[0].innerHTML += '<script src="/extensions/Selfhtml/example.php/Beispiel:JS-Anw-FktPlot-grafik_canvas.js" type="text/javascript"></'
      + "script>";
    

    Nur durch die DOM-Methode appendChild wird der Browser offensichtlich dazu veranlasst, die Bibliothek zu laden...

    Getestet im Firefox.

    Liebe Grüße,

    Felix Riesterer.

    1. problematische Seite

      Hallo Felix,

      danke für den Tipp. Ich habe das jetzt mal eingebaut, allerdings nur im Beispiel, nicht im Artikel. Ist es problematisch, wenn es hier einen Unterschied gibt? Sollte man z.B. in einer Fußnote darauf hinweisen, warum die Skripte so geladen werden?

      Gruß
      Jürgen

      1. problematische Seite

        Lieber JürgenB,

        Sollte man z.B. in einer Fußnote darauf hinweisen, warum die Skripte so geladen werden?

        schwere Frage, hmm. Ich finde, dass man mit einem JS-Kommentar wie in meinem Beispiel genügend Klarheit schafft. Der Schwerpunkt des Artikels liegt auf dem Nutzen Deiner Bibliothek, nicht auf solchen Basics, wie z.B. das Nachladen eines Scriptes.

        Liebe Grüße,

        Felix Riesterer.

        1. problematische Seite

          Servus!

          Lieber JürgenB,

          Sollte man z.B. in einer Fußnote darauf hinweisen, warum die Skripte so geladen werden?

          @JürgenB Vielen Dank für Dein komplexes und interessantes Beispiel. Ich glaube, dass jemand, der sich für so etwas Fortgeschrittenes interessiert, auch hinter das Problem mit dem Nachladen der Skripte kommt.

          Ein kurzer Hinweis, evtl. verbunden zu einem Link auf eine zip-Datei unter src.Selfhtml.org wäre aber auch angebracht.

          Herzliche Grüße

          Matthias Scharwies

          --
          Es gibt viel zu tun - packen wir's an: ToDo-Liste gewünschte Seiten