NEWS
Clipboard per Javascript lesen/schreiben
-
Hi
Wie kann ich aus einem Javascript heraus die Zwischenablage lesen bzw. schreiben?
Gruß Wolfgang
-
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard
Nicht vom Namen Mozilla abschrecken lassen. Mozilla bietet die allgemeine Referenz zum javascript-standard auch über verschiedene Browser hinweg an.
Bitte aufmerksam lesen, da gibt es Browser-Unterschiede im verhalten.
ggfs. kann das auch durch eine bibliothek vereinheitlicht werden
https://github.com/zenorocha/clipboard.js
https://github.com/lgarron/clipboard-polyfill
https://github.com/PressReader/jquery.clipboardAlle bei https://bower.io/ gefunden
-
Nur zur Sicherheit: Das funktioniert nur im Frontend, d.h. Visualisierungen etc.
Aus dem Skript-Adapter heraus geht es prinzipbedingt nicht. -
@alcalzone
ja korrekt. aus der ferne kann man nicht auf das clipboard zugreifen.
da muss man schon ein wenig mehr code schreiben.
...und ob dann clipboard der richtige lösungsansatz wäre, ist auch zu hinterfragen. -
@alcalzone said in Clipboard per Javascript lesen/schreiben:
Nur zur Sicherheit: Das funktioniert nur im Frontend, d.h. Visualisierungen etc.
Aus dem Skript-Adapter heraus geht es prinzipbedingt nicht.Ok, schade, aber bei näherem Nachdenken ist mir schon klar, dass das aus dem Skript Adapter gar nicht gehen kann. Woher sollte das Skript auch wissen, in wessen Clipboard es schreiben soll?
Meine Idee war, aus einem Skript heraus einen Widget Code zu erzeugen, den ich dann per Clipboard direkt in meine Vis Umgebung importieren kann (Koordinaten punktgenau setzen etc., Datenpunkte automatisch aus EPHome Namen erzeugen). Jetzt gehe ich eben von hinten durch die Brust indem ich den Code des Widgets anstatt in das Clipboard in eine Datei schreibe die ich per Samba freigegeben habe. Auf dem PC habe ich mir ein Programm geschrieben, dass eben diese Datei überwacht und bei Änderung in das PC Clipboard schreibt. Damit kann ich mir jetzt einfach punktgenau platzierte Widgets erzeugen ohne an 1000 Punkten von Hand Koordinaten und Datenpunkte korrigieren zu müssen. -
das hört sich für mich wie eine falsche vorgehensweise an, aber ich habe den hintergrund noch nicht verstanden.
also du willst widgets punktgenau platzieren
das platzieren von widgets ist eigentlich ein einmaliger vorgang.
alle änderungen sollten sich innerhalb eines widgets und dessen client/server-code abspielen.versuche mal zu beschreiben, welche daten du wie auf dem Bildschirm abgebildet haben möchtest und was sich da wie oft aktualisieren soll ohne an eine Lösung zur Umsetzung zu denken
per binding kann man in gewisser maße auf die positionierung/größe/andere Parameter von widgets einfluss nehmen. aber versuch erst einmal das oben zu beschreiben.
-
@oliverio
Na ja, für mich ist IoBroker irgendwie wie eine Modelleisenbahn, sprich nie fertig
Wenn ich z.B. einen neuen Sensor einbinde (z.B. einen Temperatursensor mit Thermostatregelung) dann besteht das Widget momentan bei mir aus einem hqwidgets Inner Temperature (Temperatur, Luftfeuchtigkeit und Wuinsschwert) plus 2 jqui ctrl Icon Increment (Wunschwert +/-) plus ein Basic String (letzte Aktualisierung der Tempertur)Das sieht bei mir so aus:
Diese Widgets möchte ich sowohl im Vis "Kueche" als auch im Vis "Temperatur" als auch im Vis "Kueche_hochformat" haben. Einstellen muss ich die Datenpunkte für Wunschtemeratur, IstTemperatur, Batteriestatus, IstLuftfeuchtigkeit, IncremetObjektPlus, IncrementObjektMinus, Aktualisierungszeit. PosX, PosY, BeschreibungLinksText, BeschreibungLinksLinkerAbstand, BeschreibungLinksRechterAbstand.
Wenn ich jetzt einen neuen Raum in meine Umgebung aufnehme, kann ich mir natürlich so ein Widget per Copy&Paste nehmen, alle Parameter anpassen und dann in die 3 Views reinkopieren. Dass dabei Fehler passieren und der Druck auch den Knopf "+" dann eben die Wunschtemperatur im Bad und nicht in der Küche erhöht hat mich eben zu der Lösung gebracht, ein Skript zu schreiben bei dem ich am Angang eingebe, um welchen Raum (daraus ergeben isch dann alle Datenpunkte weil ich alles mit Aliasen mache) und welches View (daraus ergibt sich die Position) es sich handelt und als Ergebnis erhalte ich den Code eines Widgets den ich in der Vis Umgebung mit "Widget importieren" direkt an der richtigen Position mit allen richtig gesetzten Datenpunkten einfügen kann. Wenn mir irgendwann der Abstand der +/- Knöpfe zum Rest nicht mehr gefällt oder ich die Farben ändern will oder das komplette Layout, muss ich das nur noch einmal im Skript anpassen und kann mir die 40 Temperaturwidgets für alle Views und alle Sensoren automatisch erzeugen lassen.Wie würdest Du das machen?
-
puh, ok, du willst halbautomatisiert dir eine view erstellen lassen und in einem bestimmtes layout einfügen.
so ein automatisches anordnen verschiedener widgets in vis gibt es tatsächlich nicht.die meisten fügen neue widgets ein oder machen copy/paste und passen dann manuell die werte an.
das jemand so ein widget-code generator selbst baut hab ich bisher noch nicht gehört, aber gut, wenn einem der aufwand nicht zu hoch ist.
-
@oliverio sagte in Clipboard per Javascript lesen/schreiben:
so ein automatisches anordnen verschiedener widgets in vis gibt es tatsächlich nicht.
man kann doch in der vis angeben auf welchen Views dieses Widget (Gruppe) erscheinen soll.
Dann allerdings immer an der gleichen Position -
@oliverio said in Clipboard per Javascript lesen/schreiben:
puh, ok, du willst halbautomatisiert dir eine view erstellen lassen und in einem bestimmtes layout einfügen.
so ein automatisches anordnen verschiedener widgets in vis gibt es tatsächlich nicht.die meisten fügen neue widgets ein oder machen copy/paste und passen dann manuell die werte an.
das jemand so ein widget-code generator selbst baut hab ich bisher noch nicht gehört, aber gut, wenn einem der aufwand nicht zu hoch ist.
Ich bin eben Programmierer und ich habe gemerkt, dass beim manuellen Anpassen immer wieder Fehler entstehen, die meiner Meinung nach schwer zu finden sind. Da bin ich mit ein paar Zeilen Code wirklich schneller dran und wenn man etwas parametrisiert, sind spätere Änderungen für alle Elemente wirklich ein Kinderspiel.
Und wenn ich dann ein neues schickes Wiget finde kann ich das einfah auf allen Views einfügen. -
@homoran said in Clipboard per Javascript lesen/schreiben:
@oliverio sagte in Clipboard per Javascript lesen/schreiben:
so ein automatisches anordnen verschiedener widgets in vis gibt es tatsächlich nicht.
man kann doch in der vis angeben auf welchen Views dieses Widget (Gruppe) erscheinen soll.
Dann allerdings immer an der gleichen PositionGenau das ist eben das Problem, ich möchte Widgets auf mehren Views an verschiedenen Positionen haben (Hochformat fürs Mobiltelefon, Quer fürs Tablet) und eben in der Temperaturübersicht mehrere Instanzen eines Widgets an verschiedenen Positionen. Dann mal mit und mal ohne Batterieanzeige und eben die ganzen Datenpunkte. Da bin ich parametrisiert schneller und flexibler.
-
@wolfgangfb sagte in Clipboard per Javascript lesen/schreiben:
Da bin ich parametrisiert schneller und flexibler.
dann musst du "nur" die vis-views.json programmiert beschreiben, sozusagen als LaTEX für Vis
-
@homoran said in Clipboard per Javascript lesen/schreiben:
@wolfgangfb sagte in Clipboard per Javascript lesen/schreiben:
Da bin ich parametrisiert schneller und flexibler.
dann musst du "nur" die vis-views.json programmiert beschreiben, sozusagen als LaTEX für Vis
Ich bin tatsächlich mit TeX bzw. LaTeX groß geworden, vielleicht kommt daher meine Affinität zu Parametrisieren.