Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [Frage] Scripte/jQuery

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.4k

[Frage] Scripte/jQuery

Geplant Angeheftet Gesperrt Verschoben Visualisierung
9 Beiträge 4 Kommentatoren 2.7k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    nevermind
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich baue mir gerade in .vis ein Keypad um nach Code-Eingabe ein Programm zu starten. Prinzipiell funktioniert das schon. Ich bin jedoch über folgendes gestolpert:

    Ich möchte mein Problem mal beispielhaft an dem Code aus der Doku festmachen und nicht an meinem konkreten Anwendungsfall.

    In der Doku steht folgendes:

    ` > Skripte

    Hier kann das Standardverhalten von Widgets geändert werden. Bei dem Einsatz dieses Werkzeugs sollte der Anwender wirklich gut im CSS/Javascript/jQuery sein um es machen zu können. Dieses Skript wird zusammen mit dem View geladen.

    z.B. beim Klick auf jedes Widget sollte ein Sound abgespielt werden:

    setTimeout(function () {
        $('.vis-widget').click(function () {
           var audio = new Audio('http://download.iobroker.net/usedForVisDocumentationBell.mp3');
           audio.play(); 
        });
    }, 2000);
    
    ```` `  
    

    Ich vermute setTimeout() wird hier verwendet, um das click-Event erst etwas verzögert an die Elemente zu binden, da diese direkt bei document.ready noch nicht gefunden werden, oder?

    Ohne setTimeout() funktioniert es nicht. Mit setTimeout() erstmal schon, allerdings dann nicht mehr, wenn das Widget (welches das Script enthält) nicht direkt im "Startview", sondern erst nach einem Wechsel des Views geladen wird.

    Mein Lösung (mit der ich aber nicht wirklich zufrieden bin) sieht wie folgt aus:

    Ich habe meinen js-Code in eine externe js-Datei ausgelagert und diese datei in der index.html verlinkt. In dieser js-Datei steht dann:

        $(document).on('click', '.vis-widget', function(){
           var audio = new Audio('http://download.iobroker.net/usedForVisDocumentationBell.mp3');
           audio.play(); 
        });
    
    

    Das Event wird also an document gebunden, da es .vis-widget' ja im DOM erstmal noch nicht gibt.

    Dazu zwei Fragen:

    1. Gibt es eine bessere Lösung als das Auslagern des Codes in eine Datei?

    2. Wenn ich meine .js-Datei editiere, werden die Änderungen nicht direkt sichtbar. ioBroker scheint diese Dateien zu cachen. Wie kann ich diesen Cache deaktivieren bzw. leeren ohne ioBroker neu starten zu müssen?

    Vielen Dank

    Jens

    1 Antwort Letzte Antwort
    0
    • arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      wo hasten du den Code eingebuden ??

      global ??

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        nevermind
        schrieb am zuletzt editiert von
        #3

        @arteck:

        wo hasten du den Code eingebuden ??

        global ?? `
        Im betreffenden widget ganz rechts im Reiter "Scripts".

        Gesendet von meinem Nexus 5X mit Tapatalk

        1 Antwort Letzte Antwort
        0
        • arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @nevermind:

          @arteck:

          wo hasten du den Code eingebuden ??

          global ?? `
          Im betreffenden widget ganz rechts im Reiter "Scripts".

          Gesendet von meinem Nexus 5X mit Tapatalk `

          ach jetzt hab ich es verstanden… du bindest den Code an ein Widget ... dann ist es wohl logisch, dass es nur auf der einen View funktioniert...

          javascript adapter installieren und klimper den code da ein

          zigbee hab ich, zwave auch, nuc's genauso und HA auch

          1 Antwort Letzte Antwort
          0
          • N Offline
            N Offline
            nevermind
            schrieb am zuletzt editiert von
            #5

            Ok, werde ich versuchen. Das Problem ist allerdings, dass der Code im Widget eben gerade nicht funktioniert, wenn das widget in einem view ist, das nicht das "Hauptview" ist, sondern erst später angezeigt wird.

            1 Antwort Letzte Antwort
            0
            • N Offline
              N Offline
              nevermind
              schrieb am zuletzt editiert von
              #6

              @arteck:

              javascript adapter installieren und klimper den code da ein `

              Hab ich leider noch nicht ganz verstanden. Mir fehlen da einfach noch paar Basics. Scripte im Javascript-Adapter einfügen habe ich hin bekommen aber wie "kommt" das Script dann in meine .vis-Oberfläche? D.h. es muss ja beim Aufruf meines Views mit geladen werden…

              Danke

              Jens

              1 Antwort Letzte Antwort
              0
              • HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #7

                Hallo Jens,
                @nevermind:

                wie "kommt" das Script dann in meine .vis-Oberfläche? `
                Hier: http://www.iobroker.net/?page_id=2754&l … Sidebar_15

                Reiter Skripte, dann hier http://www.iobroker.net/?page_id=2754&lang=de#Skripte eintragen.

                @nevermind:

                es muss ja beim Aufruf meines Views mit geladen werden… `
                und genau das passiert dann ;-)

                Gruß

                Rainer

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                1 Antwort Letzte Antwort
                0
                • N Offline
                  N Offline
                  nevermind
                  schrieb am zuletzt editiert von
                  #8

                  hmpf … ich weiß nicht wie ich es genauer beschreiben kann, Rainer. Genau so (Sidebar -> Skripte) funktioniert es eben nicht, sofern das View nicht das "Startview" ist.

                  setTimeout(function () {
                      $('.vis-widget').click(function () {
                         var audio = new Audio('http://download.iobroker.net/usedForVisDocumentationBell.mp3');
                         audio.play(); 
                      });
                  }, 2000);
                  

                  An diesem Beispielcode: Es macht nun in meinen "Startview" immer "Ping" wenn ich irgendwo draufklicke. Nun wechsel ich vom Startview in ein anderes View (z.B. von Erdgeschoss-Ansicht zu OG-Ansicht). Hier macht nun nichts mehr Ping. Auch dann nicht, wenn ich das Beispielskript im Skript-Reiter der Obergeschoss-Ansicht einfüge. Rufe ich die Obergeschoss-Ansicht direkt über den Browser auf und nicht aus dem anderen View, macht es auch hier Ping.

                  1 Antwort Letzte Antwort
                  0
                  • L Offline
                    L Offline
                    Lumpenhund
                    schrieb am zuletzt editiert von
                    #9

                    Servus zusammen,

                    wurde dieses Problem bisher gelöst?

                    Habe genau das gleiche Problem. Das Skript direkt im Java Adapter habe ich bisher nicht mal zum laufen gebracht…

                    Gibts hier neue Erkenntnisse?

                    Grüße

                    Lumpe

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    650

                    Online

                    32.4k

                    Benutzer

                    81.4k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe