Tücken von ioBroker mit Javascript (Document.write)
Ich hab heute den halben Tag(okay 1-2 Stunden) wegen einen sehr leicht fertigen und bösen Fehler beschäftigt.
Ich wollte einen Countdown einbauen im VIS auf einer Seite – natürlich mit JavaScript.
Ich hatte mir 1-2 Beispielskripte von anderen Seiten besorgt und eben kurz per VIS in ein HTML geaddet.
Das sah schon gut aus.
Vis verleitet einen ja auch dazu „mal eben“ noch was zu optimieren.
Also noch ein anderes Skript (und nicht so genau hingeschaut – was soll schon passieren?).
Plub – FEHLER
und zwar ein enorm doofer Fehler, welchen man nicht so leicht beseitigt bekommt :/
Das Skript beinhaltete ein „Document.write“, dieses sorgt dafür das die ganze Seite nicht mehr angezeigt wird, sondern nur noch der Output dieses Skriptes.
Das wäre nicht weiter schlimm, wenn VIS dieses Skript nicht auch beim editieren ausführen würde 🙁
Das heißt die editieren Seite ist auch nicht mehr aufrufbar :()
Einzige Chancen: Backup oder neu erstellen oder…. :
schauen wo VIS seine Daten speichert und es in der Datenbank (dachte ich zu erst) anpassen.
Die Datenbank war dann einfach ein JSON-File auf Platte. Dieses liegt bei mir unter:
/volume1/docker_man/ioBrokerMount/iobroker-data/files/vis.0/main
Warum auch immer – scheint diese Anpassung (zu meinem Erstaunen) nicht zu reichen.
Jedes Mal, wenn man VIS startet, wird diese Datei wieder mit dem alten Stand überschrieben (immer wo dieser her kommt). Browsercache kann es nicht sein und eine weitere Stelle auf der Platte hab ich nicht direkt gesehen.
Die alternativ, letzte verbliebene Alternative ist im Browser die Debugtools einzuschalten und zur Laufzeit-vor der Ausführung die Variable- anzupassen, so dass der VIS-Editor einmal wieder funktioniert und man den Fauxpas beheben kann….
Das Debugging war anstrengend, hat aber letzten Endes bei mir zum Erfolg geführt.
Mir hat ein Breakpoint in der vis.js Zeile: 1329 mit der Bedingung: id==“w00475″.
Die Methode initialisiert jedes einzelne Widget nacheinander.
Man muss sich einmal manuell durchdebuggen, dass man weiß, welches das zu bearbeitende ist. Bei mir war es das letzte Hinzugefügte.
Anschließend kann man den Wert der html-Variable löschen und endlich wieder den Editor sehen.
OMG – was für ein doofer Fehler.