Ulrich Zoeger: JS per Datei/Grafik ausführen

Hallo,

ich habe folgendes vor bzgl. der Einbindung eines ShareButtons für z.B. LinkedIn: statt den Code beim laden der Seite laden zu lassen, möchte ich diesen erst nach dem Klick auf eine bestimmte Grafik auf der Seite ausführen lassen (damit Ladezeit gespart wird).

Der Code für die "normale Einbindung" lautet:
<script src="//platform.linkedin.com/in.js" type="text/javascript"></script>
<script type="IN/Share"></script>

Dazu wollte ich auf meinem Server eine js/php-Datei ablegen, in der dieser Originalcode steht. Diese js/php-Datei soll dann bei Klick auf die Grafik ausgeführt werden.

Wie benenne ich am besten diese Datei (.js oder .php ???) und wie rufe ich diese Datei auf ?
Geht z.B.: <a href="javascript:LoadJavaScript('/fileadmin/test/test.js')">LI Script ausfuehren</a>

Vielen Dank.
MfG, Uli.

  1. Hallo,

    Wie benenne ich am besten diese Datei (.js oder .php ???) und wie rufe ich diese Datei auf ?
    Geht z.B.: <a href="javascript:LoadJavaScript('/fileadmin/test/test.js')">LI Script ausfuehren</a>

    Serverseitig kannst Du nehmen, was Dir zur Verfügung steht. Dies könnte bspw. PHP sein. Was Dir zur Verfügung steht ist, bis jetzt, dein Geheimnis ;-) Wenn du statisch immer denselben Code ausliefern willst, reicht evtl. auch eine einfache Textdatei.

    Der Aufruf der Datei könnte bspw. über JQuery durchgeführt werden. Suche mal nach JQuery Tutorials. Die werden Dir weiterhelfen.

    Viele Grüße

    1. Der Aufruf der Datei könnte bspw. über JQuery durchgeführt werden. Suche mal nach JQuery Tutorials. Die werden Dir weiterhelfen.

      Eine Bibliothek einbinden um eine kleinere nachzuladen?

  2. (damit Ladezeit gespart wird).

    Die mir bekannten Share-APIs sind meistens zwischen einem und drei kb groß. Ladezeit spart man woanders.

    1. Hallo 1UnitedPower,

      (damit Ladezeit gespart wird).

      Die mir bekannten Share-APIs sind meistens zwischen einem und drei kb groß. Ladezeit spart man woanders.

      formatiert ca. 660 Byte:

      LoadScript = function(url,callback) {  
        var scr = document.createElement('script');  
        scr.type = "text/javascript";  
        scr.async = "async";  
        if(typeof(callback)=="function") {  
          scr.onloadDone = false;  
          scr.onload = function() {  
            if ( !scr.onloadDone ) {  
              scr.onloadDone = true;  
              callback();  
            }  
          };  
          scr.onreadystatechange = function() {  
            if ( ( "loaded" === scr.readyState || "complete" === scr.readyState ) && !scr.onloadDone ) {  
              scr.onloadDone = true;  
              callback();  
            }  
          }  
        }  
        scr.src = url;  
        document.getElementsByTagName('head')[0].appendChild(scr);  
      } // LoadScript
      

      Ob sich das lohnt, muss Ulrich entscheiden.

      @Ulrich: Wenn du das Script nicht verstehst, melde dich.

      Gruß, Jürgen

      1. LoadScript = function(url,callback) {

        var scr = document.createElement('script');
          scr.type = "text/javascript";
          scr.async = "async";
          if(typeof(callback)=="function") {
            scr.onloadDone = false;
            scr.onload = function() {
              if ( !scr.onloadDone ) {
                scr.onloadDone = true;
                callback();
              }
            };
            scr.onreadystatechange = function() {
              if ( ( "loaded" === scr.readyState || "complete" === scr.readyState ) && !scr.onloadDone ) {
                scr.onloadDone = true;
                callback();
              }
            }
          }
          scr.src = url;
          document.getElementsByTagName('head')[0].appendChild(scr);
        } // LoadScript

          
        Zumindest der Callback-Teil dürfte mit IE < 10 scheitern.  
        http://caniuse.com/#feat=script-async  
        http://pieisgood.org/test/script-link-events/  
          
        Man könnte natürlich ein synchrones work-around schaffen.
        
        1. Hallo 1UnitedPower,

          Zumindest der Callback-Teil dürfte mit IE < 10 scheitern.

          warum? In meinem Einsatzbereich funktioniert es: s. onreadystatechange.

          Gruß, Jürgen

          1. warum? In meinem Einsatzbereich funktioniert es: s. onreadystatechange.

            Mein Fehler, du hast recht.