Problem mit Codemirror - Änderung der Funktion Loadscript

Begonnen von svenson08, 17 April 2014, 20:02:46

Vorheriges Thema - Nächstes Thema

svenson08

Hallo Rudi,

seit der Implementierung des Codemirrors funktioniert dieser nicht wenn das Dashboard genutzt wird.
Grund ist das ich im Dashboard das jquery.min.js bereits eingebunden habe.

Das Problem mit dem Codemirror in Verbindung mit dem bereits eingebundenen jquery.min.js konnte ich beheben in dem ich deine Funktion loadscript aus der fhemweb.js angepasst habe. Diese führt nur dann die übergebene Funktion (cb) aus wenn das Script fertig geladen wurde. Wenn das Script bereits geladen war (wie z.B. durch das Dashboard) wird diese Funktion nicht ausgeführt.
Ich habe dein loadscript so angepasst das auch in der letzteren Konstellation die übergebene Funktion (cb) ausgeführt wird. Ich gehe davon aus das man nicht nur dann cb ausgeführt haben möchte wenn das Script erstmalig (fertig) geladen wurde, sondern auch wenn es bereits geladen war. Nebenwirkungen von diesen Änderungen konnte ich nicht feststellen.

Wäre schön wenn du die Änderung übernehmen könntest, oder falls die noch was bessere einfällt bin ich für alle Ideen und Vorschläge offen.

Gruß Svenson

Zitatfunction
loadScript(sname, cb)
{
  var h = document.head || document.getElementsByTagName('head')[0];
  var r = h.getAttribute("root");
  if(!r)
    r = "/fhem";
  sname = r+"/"+sname;
  var arr = h.getElementsByTagName("script");
  for(var i1=0; i1<arr.length; i1++)
    if(sname == arr[i1].getAttribute("src")) {
     if(cb) cb(); //callback if script already involved
      return;
   }
  var script = document.createElement("script");
  script.src = sname;
  script.async = script.defer = false;
  script.type = "text/javascript";
  script.onload = cb;
  log("Loading "+sname);
  script.onreadystatechange = function() {
    if(script.readyState == 'loaded' || script.readyState == 'complete') {
      script.onreadystatechange = null;
      if(cb)
        cb();
    }
  }
  h.appendChild(script);
}

rudolfkoenig

Hallo Sven,

dieser Bugfix liegt bei mir seit eine Woche herum, da habe ich versucht ein Multi-Select mit jquery-ui zu bauen, wurde aber nicht fertig. Ich habe die fhemweb.js Aenderung jetzt endlich eingecheckt, Multi-Select muss noch warten.

Gruss,
  Rudi

svenson08

Ok. Danke.
Ein jquery-ui Multiselect für die Roomliste hatte ich mir auch mal angesehen, aber kam auch nicht wirklich zu einem Ergebniss.