asyncOutput - SyntaxError: identifier starts immediately after numeric literal

Begonnen von DS_Starter, 17 Oktober 2022, 14:11:58

Vorheriges Thema - Nächstes Thema

DS_Starter

Ich gebe eine relativ komplexe Nachricht mit asyncOutput aus.
Es kommt ein JavaScript Fehler:

#FHEMWEB notification:
FW_okDialog('  ')
SyntaxError: identifier starts immediately after numeric literal

Ganz einfachen Text gibt asyncOutput problos aus.

Frage ist jetzt ob und wenn ja was evtl. in FW_okDialog angepasst werden müsste.
Den Syntaxerror kann ich nicht wirklich deuten.

LG
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

Was steht in der JavaScript Console?
Ich fuerchte ohne den exakten Wert kann ich nicht weiterhelfen.

Der Haken an komplizierten Inhalt ist, dass man ihn zweimal Schuetzen muss, einmal fuer perl und einmal fuer JavaScript, "da drueben" im Browser.

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

DS_Starter

JavaScript Console...

Wo findet man die beim aktuellen Firefox ?
Bilde mir ein in früheren Browserversionen war die einfach zu finden. Momentan suche ich mich etwas tod.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Habe das Smily testweise entfernt. Der Javascriptfehler bleibt aber bestehen.
Daran liegt es also nicht.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Dr. Boris Neubert

Zitat von: DS_Starter am 17 Oktober 2022, 15:08:46
JavaScript Console...

Wo findet man die beim aktuellen Firefox ?

Hamburger-Menü | Weitere Werkzeuge | Browser-Konsole
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

DS_Starter

Danke Boris.
Ich habe dort alle Komponenten aktiviert (direkt ein Auswahl für JS gibt es nicht weswegen ich die Browserkonsole ignoriert hatte) und auf "FW_" gefiltert:


16:00:25.763 Rcvd: ["#FHEMWEB:WEB","FW_okDialog('<html><b>Informationen zur Anlagenkonfigurationspr&uuml;fung</b> <br><br><table class=\u0022roomovervi...(2628) fhemweb.js:576:13
16:01:27.330 FW_queryValue:{ReadingsVal("SolCast","plantConfiguration","")} fhemweb.js:576:13
16:01:27.334 FW_cmd:/fhem?cmd=help SolCast&XHR=1 fhemweb.js:576:13
16:01:29.566 FW_queryValue:{ReadingsVal("SolCast","consumerImmediatePlanning","")} fhemweb.js:576:13
16:01:29.582 FW_queryValue:{AttrVal("SolCast","room","")} fhemweb.js:576:13
16:01:39.161 FW_queryValue:{ReadingsVal("SolCast","plantConfiguration","")} fhemweb.js:576:13
16:01:39.166 FW_cmd:/fhem?cmd=help SolCast&XHR=1 fhemweb.js:576:13
16:01:41.600 FW_queryValue:{ReadingsVal("SolCast","consumerImmediatePlanning","")} fhemweb.js:576:13
16:01:41.621 FW_queryValue:{AttrVal("SolCast","room","")} fhemweb.js:576:13
16:01:43.969 Rcvd: ["#FHEMWEB:WEB","FW_okDialog('<html><b>Informationen zur Anlagenkonfigurationspr&uuml;fung</b> <br><br><table class=\u0022roomovervi...(2628)


Der letzte Eintrag ist zwar das Popup, aber erkennbar ist da nichts für mich.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Muß jetzt leider weg, schaue später nochmal.
Vielen Dank einstweilen.
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Guten Morgen,

ich gebe den Output nun über ein Get-Komando aus. Damit ist das Popup absolut ok.
Mir ging es hauptsächlich um die Popup-Ausgabe, ob Set oder Get war an der Stelle erstmal nebensächlich.
Die Möglichkeit der Ausgabe als Popup über ein Set-Kommando kenne ich nur über Verwendung von asyncOutput.

Sollte das anders machbar sein, bin ich dankbar für Tipps dazu.

Danke und LG

ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

Zitat16:01:43.969 Rcvd: ["#FHEMWEB:WEB","FW_okDialog('<html><b>Informationen zur Anlagenkonfigurationspr&uuml;fung</b> <br><br><table class=\u0022roomovervi...(2628)
Kannst Du bitte in www/pgm2/fhemweb.js, Zeile 1206, die beiden 132 durch 13200 austauschen, das Problem nachstellen, und die komplette Rcvd Zeile aus der JavaScript Konsole hier zeigen?

DS_Starter

Hallo Rudi,

habe es geändert und hier ist die komplette Ausgabe, sensible Daten sind XXXXXX :


13:48:47.020 Rcvd: ["#FHEMWEB:WEB","FW_okDialog('<html><b>Informationen zur Anlagenkonfigurationspr&uuml;fung</b> <br><br><table class=\u0022roomoverview\u0022 style=\u0022text-align:left; border:1px solid; padding:5px; border-spacing:5px; margin-left:auto; margin-right:auto;\u0022><tr style=\u0022text-decoration:underline; font-weight:bold;\u0022><td> Object </td><td> State </td><td> Result </td><td> Note </td></tr><tr></tr><tr><td> <b>Common Settings</b>                                        </td><td style=\u0022text-align: center\u0022> <img class=' 10px-kreis-gruen_png' src=\u0022/fhem/images/default/10px-kreis-gruen.png\u0022 alt=\u0022\u0022 title=\u0022\u0022>  </td><td> fullfilled                            </td><td style=\u0022text-align: left\u0022> checked parameter: <br>cloudFactorDamping, rainFactorDamping, optimizeSolCastAPIreqInterval <br>pvCorrectionFactor_Auto, event-on-change-reading <br>     </td></tr><tr></tr><tr><td> <b>DWD Weather Attributes</b>                                        </td><td style=\u0022text-align: center\u0022> <img class=' 10px-kreis-gruen_png' src=\u0022/fhem/images/default/10px-kreis-gruen.png\u0022 alt=\u0022\u0022 title=\u0022\u0022>  </td><td> fullfilled                            </td><td style=\u0022text-align: left\u0022> checked attributes of device \u0022DWD.Solar.Forecast\u0022:<br>TTT Neff R101 ww SunUp SunRise SunSet     </td></tr><tr></tr><tr><td> <b>Roof Ident Pair Settings</b>                                        </td><td style=\u0022text-align: center\u0022> <img class=' 10px-kreis-gruen_png' src=\u0022/fhem/images/default/10px-kreis-gruen.png\u0022 alt=\u0022\u0022 title=\u0022\u0022>  </td><td> fullfilled                            </td><td style=\u0022text-align: left\u0022> checked \u0022Süddach\u0022 Roof Ident Pair \u0022p1\u0022:<br>rtid=95fc-XXXXXXX, apikey=XXXXXXXXXXXXXX <br>checked \u0022Schleppdach\u0022 Roof Ident Pair \u0022p2\u0022:<br>rtid=6878-XXXXXXXXX, apikey=XXXXXXXXXXXXXXXX <br>     </td></tr><tr></tr><tr><td> <b>String Configuration</b>                                        </td><td style=\u0022text-align: center\u0022> <img class=' 10px-kreis-gruen_png' src=\u0022/fhem/images/default/10px-kreis-gruen.png\u0022 alt=\u0022\u0022 title=\u0022\u0022>  </td><td> fullfilled                            </td><td style=\u0022text-align: left\u0022> Schleppdach => peak: 0.825, pk: p2<br>Süddach => peak: 5.130, pk: p1<br>     </td></tr><tr></tr></table></html><br><br>Herzlichen Glückwunsch 😊, die Anlagenkonfiguration ist fehlerfrei. Bitte eventuelle Hinweise beachten. ')",""]


Das Ergebnis ist noch unverändert, sehe in der obigen Ausgabe nicht wirklich etwas was auf Fehler hinweist.
Ich benutze den Firefox 105.0.3 (64-Bit).
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

#1 Das Argument von FW_okDialog ist in einfaches Ausfuehrungszeichen (') eingeschlossen, aber es enthaelt selbst ein paarmal ', ungeschuetzt. Das passt dem Parser nicht.

#2 Da das Argument im Browser durch eval() geschickt wird, muesste jedes Ausfuehrungszeichen doppelt geschuetzt werden, d.h. im Browser muss  \\' ankommen.

#3 Ich wuerde einfache und doppelte Ausfuehrungszeichen nicht mischen, und durchgehend das Gleiche verwenden. In JavaScript sind die beiden gleichwertig.

#4 Ein Teil des Argumentes ist in <html> eingeschlossen, was nur verwirrend ist. Komplett in <html> eingeschlossene Reading- oder Attribut-Werte werden bei der Darstellung von fhemweb.js als HTML und nicht als Text betrachtet. Ist in diesem Fall irrelevant, weil hier direkt JavaScript aufgerufen wird.

DS_Starter

Danke für die Analyse Rudi. Dann setze ich mich mal an die verschiedenen Stellen.

LG
ESXi 6.5 @NUC6i5SYH+FHEM auf Debian, DbLog/DbRep MariaDB
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

Nachtrag: FW_AsyncOutput schuetzt ", aber  nicht '.
Am einfachsten ist es vmtl. alle HTML-Attribute in doppelte Ausfuehrungszeichen (") einzuschliessen.

mumpitzstuff

In einem DOIF Script habe ich mal folgendes verwenden müssen:

return "<a href=\"#!\" onclick=\"FW_okDialog(';".$desc."';)\">".$title."</a>";;

Hier wurde aus ' ein '. Ich kann mich aber nicht mehr erinnern ob das ein DOIF spezifisches Problem war bzw. bin mir nicht sicher ob das was zu der Lösung deines Problems beitragen könnte.