• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

API Aufruf aus HTML und Fenster schließen

  • Ersteller Ersteller drillo123
  • Erstellt am Erstellt am
D

drillo123

Guest
Hallo,

leider habe ich bisher keine Lösung gefunden, vielleicht hat ja noch jemand einen TIP.

Ich möchte in einer HTML Seite ein Link oder Button setzen der einen API-Request als HTML Link in einem neuen Fenster aufruft und das Fenster dann gleich wieder schließt.

Der Aufruf sieht ungefähr so aus:

Code:
http://192.168.xx.xx:8087/set/buster.0.settings.setNight?value=30
 
Ich möchte in einer HTML Seite ein Link oder Button setzen der einen API-Request als HTML Link in einem neuen Fenster aufruft und das Fenster dann gleich wieder schließt.
Warum? Was genau hast du vor? Warum nicht einen Button der per Javascript im Hintergrund die URL aufruft (irgendwie kenntliche machen dass der Button seinen Job erledigt, sonst drückt der Besucher da ständig drauf weil vermeintlich nichts passiert)?
 
Also was genau du vorhast, erschließt sich mir nicht.
Über reines HTML wirst du zwar einen Link verlinken können, aber keinen API-Call machen können.
Dafür würdest du JS oder PHP benötigen.
 
Ja, ohne JS oder PHP wird es nicht gehen.

Grundsätzlich könnte man mittels XmlHttpRequest oder fetch-API versuchen, diese URL abzurufen, aber da sind moderne Browser leider mit CORS vor. Einen Hintergrund-Request auf einen anderen Origin als den, von dem das Script geladen wurde, verbieten sie.

Ein Workaround könnte sein, ein img-Element zu erzeugen. Darauf registriert man einen load-Eventhandler, dann setzt man das src Attribut auf die URL, hängt das Bild ins DOM und wenn load zuschlägt, schmeißt man es wieder raus. So machen es jedenfalls die diversen Spioniertools, wenn sie nach Hause telefonieren wollen und CORS sie nicht lässt.
 
Ins DOM hängen braucht man nicht einmal...

Code:
<button onclick="javascript:{(new Image).src='http://192.168.xx.xx:8087/set/buster.0.settings.setNight?value=30&cachebust='+Date.now();}">NACHT</button>

Image erzeugen und src zuweisen reicht. Das Bild wird nicht weiter verwendet und irgendwann vom Garbage Collector abgeräumt. Das Anhängen eines cachebust-Parameters ist wichtig, sonst führt nur der erste Klick zu einer Reaktion. Die Reaktion an sich sollte durch das Smarthome-Gerät erfolgen. Wenn es das nicht tut (keine Ahnung, was setNight?value=30 tut), muss man das Script noch aufbohren und sollte dann auf normales, unaufdringliches Script umsteigen.
 
Zurück
Oben