Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'replaceAll() not defined' in slightly aged browsers #1150

Closed
Joerg-rw opened this issue Feb 24, 2021 · 18 comments
Closed

'replaceAll() not defined' in slightly aged browsers #1150

Joerg-rw opened this issue Feb 24, 2021 · 18 comments
Labels
🐛 bug-report Something isn't working 🏷️ WebUI This refs the WebUI component

Comments

@Joerg-rw
Copy link

Joerg-rw commented Feb 24, 2021

Describe the bug
Beim Anlegen einer neuen Systemvariablen in

>>>  Startseite > Einstellungen > Systemvariablen > "Neu"    

wird ausschliesslich bei Auswahl "Typ=Zeichenkette" keine Aktion auf "OK" ausgefuehrt und damit auch die Systemvariable nicht angelegt.

Steps to reproduce the behavior

  1. neue Systemvariable anlegen: Startseite > Einstellungen > Systemvariablen > "Neu"
  2. beliebigen Namen und Typ=Zeichenkette auswaehlen
  3. "OK" button klicken

Expected behavior
Systemvariable wird angelegt, requester schliesst

Screenshots
lvELn7S

System information:

  • RaspberryMatic Version: 3.55.10.20210213
  • Used Hardware: CCU3
  • Used HomeMatic RF-Module: CCU3

Additional context
RPimatic "neuling", CCU3->diese firmware fand vor wenigen tagen statt. Ich kann weder ausschliessen dass bei der migration etwas schief lief, noch dass im verwendeten browser ein bug sein koennte

@jp112sdl
Copy link
Contributor

noch dass im verwendeten browser ein bug sein koennte

Hast du denn nicht zunächst erst einmal einen anderen Browser ausprobiert, um das ausschließen zu können?

replaceAll wird von /www/webui/js/extern/codemirror/addon/search/search.js bereitgestellt.

Warum die Funktion bei dir nicht läuft, ist rätselhaft.
Würde mich auch nicht wundern, wenn da mal wieder irgendein Internet Security / Antivieren Supertool etwas blockiert.

@Joerg-rw
Copy link
Author

Joerg-rw commented Feb 24, 2021

bisher getestet in (wird aktualisiert):

Firefox

Konqueror

Chromium Version 78.0.3904.108 (openSUSE Build) (64-bit)

selbes ergebnis in allen

@jp112sdl
Copy link
Contributor

Hmm, dann bin ich auch ratlos.

@jens-maus
Copy link
Owner

Tut mir leid, auch ich kann das nicht reproduzieren. @Joerg-rw Bitte selbst in einer frischen Installation probieren, wenn es dort geht dann liegt ein Fehler in der existenten Installation vor. Wenn nicht gerne das Bugticket wieder aufmachen.

@jens-maus jens-maus added 🐛 bug-report Something isn't working 💁 user problem This is a problem located in the user setup/usage 🙅 worksforme This isn't reproducible by the maintainer labels Feb 24, 2021
@Joerg-rw
Copy link
Author

Joerg-rw commented Feb 24, 2021

letzte erfolgreich angelegte Zeichenketten-var, offenbar nicht ueber WebUI sondern remote von user-iPhone bei app-installation angelegt:

pocketControlPushMessage ("Change the value to push. Do not delete")

Verdacht: die an den Browser uebergebene Liste(?) mit zeichenketten-systemvariablen enthaelt ein Element das JS nicht verarbeiten kann.
Wie koennte man diese Liste anzeigen lassen?
Wo auf der CCU wird die Liste mit SysVar gespeichert?

Update1:
Reflash der selben firmware-Version ueber Zentralenwartung "Direkt auf CCU laden und installieren";
deinstallieren der pocketcontrol app auf iPhone und anschliessendes Loeschen von pocketControlPushMessage SysVar in CCU-WebUI sowie anschliessender reboot:
keine Aenderung, Fehler bleibt identisch

Update2:
User konnte von anderem PC aus angeblich eine Zeichenketten-SysVar anlegen. Bis auf weiteres "ticket closed"

@Joerg-rw
Copy link
Author

Joerg-rw commented Feb 24, 2021

pb += "string sValue = '"+$("txValue").value.replaceAll("'","\\'")+"';";

4DcxDAP

@jens-maus
Copy link
Owner

jens-maus commented Feb 24, 2021

Was für ein browser ist das? Die .replaceAll() funktion sollte es in jedem halbwegs modernen browser geben. Die Fehlermeldung verstehe ich daher nicht ganz bzw. kann sie nicht nachvollziehen (siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)

BTW: Bitte Screenshots hier direkt in GitHub hochladen (Drag&Drop). Sowas gehört nicht irgendwo extern hin - hab deinen letzten jetzt hier mal integriert.

@Joerg-rw
Copy link
Author

Joerg-rw commented Feb 25, 2021

Screenshot_20210225_012600
ich bin ratlos

Screenshot_20210225_012926
Fehler tritt auf drei Browsern (FF 68.2.0esr (64-bit), Konqueror, Chromium Version 78.0.3904.108 (openSUSE Build) (64-bit)) auf OpenSuse Linux in gleicher Weise auf, auf einem Macbook (FF) jedoch nicht.

Das System wurde vor wenigen Tagen frisch von original-CCU3 nach RasPiMatic migriert und heute nochmal neu auf die gleiche Version ge"update"et
Evtl Ticket Subject anpassen und Ticket wieder oeffnen?

@Joerg-rw
Copy link
Author

Joerg-rw commented Feb 25, 2021

Was für ein browser ist das? Die .replaceAll() funktion sollte es in jedem halbwegs modernen browser geben. Die Fehlermeldung verstehe ich daher nicht ganz bzw. kann sie nicht nachvollziehen (siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)

Danke! :-) Das war wohl genau auf den Punkt
Ich weiss nicht ob man nicht sowas wie $("txValue").value.replace(/'/g, '\\\''); (oder so aehnlich ;-D, wichtig das "g" ) stattdessen verwenden koennte.
Screenshot_20210225_063219

Der Vorteil waere:
in FF z.B. definiert seit version 1 von 2004-11-09 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#browser_compatibility
gegenueber FF v.77 2020-06-02 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll#browser_compatibility

ps: >>Wenn nicht gerne das Bugticket wieder aufmachen.
Gerne, aber wie? ;-D

@Joerg-rw Joerg-rw changed the title Systemvariable neu anlegen - typ "Zeichenkette" - OK button laeuft auf fehler prototype.js line 399 replaceAll() not defined in slightly aged browsers - was: Systemvariable neu anlegen - typ "Zeichenkette" - OK button laeuft auf fehler prototype.js line 399 Feb 25, 2021
@jens-maus jens-maus reopened this Feb 25, 2021
@jens-maus
Copy link
Owner

Ok, also gehe ich davon aus hattest du eine Firefox Version < 77 im Einsatz? Welche genau?

@jens-maus jens-maus changed the title replaceAll() not defined in slightly aged browsers - was: Systemvariable neu anlegen - typ "Zeichenkette" - OK button laeuft auf fehler prototype.js line 399 'replaceAll() not defined' in slightly aged browsers Feb 25, 2021
@jens-maus jens-maus added 🏷️ WebUI This refs the WebUI component and removed 💁 user problem This is a problem located in the user setup/usage 🙅 worksforme This isn't reproducible by the maintainer labels Feb 25, 2021
@jens-maus jens-maus added this to the next release milestone Feb 25, 2021
@Joerg-rw
Copy link
Author

Ok, also gehe ich davon aus hattest du eine Firefox Version < 77 im Einsatz? Welche genau?

FF 68.2.0esr (64-bit), Konqueror, Chromium Version 78.0.3904.108 (openSUSE Build) (64-bit)

Danke :-)

@jp112sdl
Copy link
Contributor

Zwar leicht OT: Aber mit meinem älteren Chrome (70.x irgendwas) gehen z.B. die neuen Translate-Funktionen nicht (WebUI Fix 0111). Nach dem Chrome Update ist alles schick.

Ist die Frage, inwieweit man hier (und an anderer Stelle) abwärtskompatibel sein möchte

@Joerg-rw
Copy link
Author

Zwar leicht OT: Aber mit meinem älteren Chrome (70.x irgendwas) gehen z.B. die neuen Translate-Funktionen nicht (WebUI Fix 0111). Nach dem Chrome Update ist alles schick.

Ist die Frage, inwieweit man hier (und an anderer Stelle) abwärtskompatibel sein möchte

Evtl zumindest sinnvoller einsatz von try https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch#conditional_catch-blocks ?
disclaimer: total JS noob here

@jens-maus
Copy link
Owner

Zwar leicht OT: Aber mit meinem älteren Chrome (70.x irgendwas) gehen z.B. die neuen Translate-Funktionen nicht (WebUI Fix 0111). Nach dem Chrome Update ist alles schick.

Ist die Frage, inwieweit man hier (und an anderer Stelle) abwärtskompatibel sein möchte

Diese Frage müsste @theimo1221 beantworten. Da er die Optimierungen im 0111 WebUI Patch vorgenommen hat, müsste er am besten eine Aussage darüber treffen können inwieweit man die Anpassungen noch kompatibler zu älteren Browserversionen bekommt. Wenn nicht oder das zuviel aufwand bedeuten würden, dann würde ich es allerdings verschmerzbar finden wenn so alte Browser wie Chrome 70.x dann nicht mehr gehen. Der ist ja von ca. 2018 und lässt sich ja auch problemlos updaten. :)

@theimo1221
Copy link
Contributor

Werde ich mir später mal anschauen, an sich bin ich in dem Patch teilweise eher auf Standard JS zurückgegangen, könnte mir spontan nur vorstellen, dass da wegen der ?? Notation gemeckert wird.

@theimo1221
Copy link
Contributor

theimo1221 commented Feb 25, 2021

Werde ich mir später mal anschauen, an sich bin ich in dem Patch teilweise eher auf Standard JS zurückgegangen, könnte mir spontan nur vorstellen, dass da wegen der ?? Notation gemeckert wird.

Jo, ist die ?? Notation. Ich hoffe ich komme dazu das gleich noch zu ändern. Sind in der Firma gerade ordentlich am Gas geben 😄

@jens-maus
Copy link
Owner

Jo, ist die ?? Notation. Ich hoffe ich komme dazu das gleich noch zu ändern. Sind in der Firma gerade ordentlich am Gas geben 😄

Super. Wäre in der Tat schön wenn du das noch flott reparieren könntest oder einfach kurz nen diff hier postest und dann integriere ich das schnell noch für die nächsten nightly snapshot.

@theimo1221
Copy link
Contributor

Jo, ist die ?? Notation. Ich hoffe ich komme dazu das gleich noch zu ändern. Sind in der Firma gerade ordentlich am Gas geben 😄

Super. Wäre in der Tat schön wenn du das noch flott reparieren könntest oder einfach kurz nen diff hier postest und dann integriere ich das schnell noch für die nächsten nightly snapshot.

Siehe #1151....

Ich hoffe ich komme die Tage noch zu der ProofAndSetValue Thematik habe dafür hier auch schon vorbereiteten Code liegen, werde aber vermutlich erst Samstag dazu kommen.

IT-VBFK pushed a commit to IT-VBFK/RaspberryMatic that referenced this issue Mar 10, 2021
rather than the newer replaceAll() which seems to be not supported by
all recent browsers yet. This closes jens-maus#1150.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug-report Something isn't working 🏷️ WebUI This refs the WebUI component
Projects
None yet
Development

No branches or pull requests

4 participants