Fehler in fhemweb.js

Begonnen von Kawaci, 03 Oktober 2017, 10:27:31

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Kann es damit auch nicht nachstellen.
Ich habe in fhemweb.js was angepasst, was das Problem vermutlich behebt, ich wuesste aber trotzdem gerne, was die eigentliche Ursache ist.

jannis

Zitat von: rudolfkoenig am 02 Dezember 2020, 13:55:09
Kann es damit auch nicht nachstellen.
Ich habe in fhemweb.js was angepasst, was das Problem vermutlich behebt, ich wuesste aber trotzdem gerne, was die eigentliche Ursache ist.

Gut, ich mache ein Update und gebe gleich Bescheid.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

jannis

Zitat von: jannis am 02 Dezember 2020, 14:00:40
Gut, ich mache ein Update und gebe gleich Bescheid.

So, Update gemacht und jetzt tritt das Problem leider wieder auf. Habe ich das Update zu früh gemacht ... Deine Änderungen vielleicht noch nicht online?
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

rudolfkoenig

Die Aenderungen sind im SVN, fuer FHEM-Updates sind die erst morgen ab acht verfuegbar.

jannis

Habe die Änderung in mein fhemweb.js eingefügt. Eine Fehlermeldung kommt aber immer noch an der selben Stelle:


fhemweb.js line 312:
TypeError: ((mtype + " ") + val).replaceAll is not a function
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

zockz

Ich habe dasselbe Problem.
Der Fix besteht darin, in fhemweb.js die Konkatenation und Replace auseinanderzuziehen.
var mv = mtype+val
mv = mv.replaceAll(/[^a-z0-9_]/ig,'_')

Warum das aber so ist, verstehe ich auch nicht. Ich bin kein JavaScripter, aber hätte auch gedacht, dass es mit Klammern auch so funktionieren müsste.
Vielleicht ist das Browser-spezifisch? Ich verwende Vivaldi (2.5.1525.46)

rudolfkoenig

jannis: das was du eingebaut hast, ist nicht das, was ich geaendert habe. Vermutlich hat dein "Fix" meiner Aenderung aber keine Auswirkung auf die Fehlermeldung.
@zockz: wenn deine Aenderung was bewirkt, dann bin ich sehr ueberrascht, und ich uebernehme es solange nicht, bis ich das selbst nicht nachstellen kann :)

zockz

#22
Ich bekomme den Fehler jedesmal, wenn ich in einer Combobox (z. B. set-Menü eines Device) irgendwas auswähle.
Vermute aber nicht, dass das überall so ist, sonst wären die Beschwerden lauter ;-)
@jannis: welchen Browser verwendest Du?

Add. 1: Ich hab mal ein paar andere Browser ausprobiert: Chrome, Firefox und Edge scheinen kein Problem zu haben, IE classic wirft denselben Fehler.

Add. 2: Update von Vivaldi hat das Problem ebenfalls gelöst, also eher ein Browserbug.

jannis

Zitat von: zockz am 02 Dezember 2020, 15:35:37
@jannis: welchen Browser verwendest Du?

Recht alten Firefox 66.03 ... weil ich im Augenblick leider keine Zeit habe, ein großes Upgrade meiner ebenfallls älteren Linux-Distribution vorzunehmen. Vielleicht schaffe ich es Weihnachten.

... das Linux für FHEM auf dem Raspberry Pi ist aber topaktuell.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

jannis

Mir fiel gerade noch etwas auf:

Wählt man auf der Device-Seite ein Attribut
1. über die Auswahlliste "attr": tritt das genannte Problem auf.
2. durch Anklicken eines Attributes, das man bereits mit einem Wert befüllt hat, aus der Auflistung Attributes: tritt das Problem NICHT auf.

Hoffe, nun ist alles klar :)
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

rudolfkoenig

Klar im Sinne von: ich habe das Geschriebene verstanden: ja
Klar im Sinne von: ich kann es nachstellen: nein.

zockz

Zitat von: rudolfkoenig am 02 Dezember 2020, 18:28:23
Klar im Sinne von: ich kann es nachstellen: nein.
Wie gesagt, liegt wohl an der Browserversion bzw. der veralteten JavaScript-Engine.

@jannis: versuch doch mal, die Zeile 312 in fhemweb.js durch die beiden von mir oben zu ersetzen, bis Du den Browser aktualisieren kannst.

jannis

#27
Zitat von: zockz am 02 Dezember 2020, 19:09:24
@jannis: versuch doch mal, die Zeile 312 in fhemweb.js durch die beiden von mir oben zu ersetzen, bis Du den Browser aktualisieren kannst.

Hab ich gemacht ... gleiche Fehlermeldung:

fhemweb.js line 315:
TypeError: mv.replaceAll is not a function

Ich vermute mal, meine Javascriptengine kennt den Befehl "replaceAll" nicht.

... und noch ein wenig gegraben und siehe da: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll#Browser_compatibility

"replaceAll" geht erst ab Firefox 77 ... und ich habe 66 :(
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

jannis

#28
Das habe ich bei stackoverflow.com zu replaceAll gefunden:


Use replace instead of replaceAll with a regular expression with the global modifier for better browser support.

let string = ":insertx: :insertx: :inserty: :inserty: :insertz: :insertz:";
let newstring = string.replace(/:insertx:/g, 'hello!');
console.log(newstring);


If you don't want to upgrade your Chrome nor use reg expressions (since they're less performant), you can also do this:

let string = ":insertx: :insertx: :inserty: :inserty: :insertz: :insertz:";
let newstring = string.split(":insertx:").join('hello!');


+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

rudolfkoenig

Habe replaceAll durch replace ersetzt.