FHEM Forum

FHEM => Frontends => Thema gestartet von: DS_Starter am 17 Oktober 2022, 14:11:58

Titel: asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 17 Oktober 2022, 14:11:58
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
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: rudolfkoenig am 17 Oktober 2022, 14:20:01
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.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: frank am 17 Oktober 2022, 14:28:33
ich tippe auf den smiley.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 17 Oktober 2022, 15:08:46
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.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 17 Oktober 2022, 15:35:15
Habe das Smily testweise entfernt. Der Javascriptfehler bleibt aber bestehen.
Daran liegt es also nicht.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: Dr. Boris Neubert am 17 Oktober 2022, 15:54:43
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
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 17 Oktober 2022, 16:05:48
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.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 17 Oktober 2022, 16:18:48
Muß jetzt leider weg, schaue später nochmal.
Vielen Dank einstweilen.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 18 Oktober 2022, 09:00:19
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

Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: rudolfkoenig am 18 Oktober 2022, 11:51:29
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?
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 18 Oktober 2022, 13:52:41
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).
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: rudolfkoenig am 18 Oktober 2022, 14:42:24
#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.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 18 Oktober 2022, 14:45:37
Danke für die Analyse Rudi. Dann setze ich mich mal an die verschiedenen Stellen.

LG
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: rudolfkoenig am 18 Oktober 2022, 15:06:37
Nachtrag: FW_AsyncOutput schuetzt ", aber  nicht '.
Am einfachsten ist es vmtl. alle HTML-Attribute in doppelte Ausfuehrungszeichen (") einzuschliessen.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: mumpitzstuff am 18 Oktober 2022, 23:18:11
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.
Titel: Antw:asyncOutput - SyntaxError: identifier starts immediately after numeric literal
Beitrag von: DS_Starter am 23 Oktober 2022, 08:58:28
Danke für den Hinweis mumpitzstuff. Das ist auch nochmal eine Möglichkeit.