fhemweb führt ungewolltes Reload der Seite nach JS Aufruf durch

Begonnen von Blackcat, 14 Juli 2015, 20:40:40

Vorheriges Thema - Nächstes Thema

Blackcat

Seid Anfang Juni hat sich ein Reload Bug in Fhem eingeschlichen.
Nutzer des ios6 styles haben mich darauf aufmerksam gemacht. Habe es leider durch meinen wohl zu großen Update Zyklus nicht sofort gemerkt.

Das Problem sieht wie folgt aus. Man hat in jQuery eine Click Funktion so wie diese hier:

$(document).ready(function() {
/*
/* Style Config
*/
$("#logo").click(function () {
$("#menu").toggle();
});

// Hier wird der Logolink entfernt und durch ein # ersetzt
var parentLink = $("#logo").parent("a");
if (typeof(parentLink.attr("href")) == "undefined") {
parentLink.attr("onclick", "#");
} else {
parentLink.attr("href", "#");
}

});


Ist die Funktion ausgeführt worden, wird jedoch nicht der Anker (#) aufgerufen, sondern Fhem neu geladen, dass alle durch JS gesetzten Klassen etc. entfernt :(

Hat jemand eine Idee wo sich der Fehler eingeschlichen haben könnte?

PS: das erste mal ist das Problem am 12.06. aufgefallen
Viele Grüße Sandra - FHEM Style Entwicklerin iOS6+12
-----
ZBox nano, Homematic, Homebridge, Hue + Mi Light, ZWave, Dyson, etc.
https://www.foodcat.de
https://www.youtube.com/c/FoodCat (hier gibt es auch immer mehr Hausautomatisierungsvideos)

rudolfkoenig

In der letzten Zeit hat fhemweb.js zunehmend mehr <a> tags ueberschrieben, damit die Aktionen in JavaScript ausgefuehrt werden, und kein Reload der Seite verursachen. Ich vermute, dass die beiden Programme sich gegenseitig stoeren.

Tritt das Problem immer noch auf? Ich habe vor 3 Tagen ein paar Probleme in diesem Bereich gefixt.
Falls ja, kannst du mir bitte ein konkretes Beispiel geben, was ich direkt testen kann?
Und auch beschreiben, was man erwartet.

FunkOdyssey

Mal ne Frage am Rande:

Seit einigen Tagen öffnet sich beim Klick auf das Mausrad (Link im neuen Tab öffnen) gleichzeitig auch der Link im Ursprungsfenster. Somit habe ich danach zwei Fenster mit gleichem Inhalt.

Ich bin nur schnell durch die letzten Commits gedüst und ich habe auch nur gezielt nach JS-Änderungen gesucht. Ich hatte leider noch keine Möglichkeiten, ein Revert auszuprobieren, aber könnte der Fehler evtl. durch eine der letzten Commits in fhemweb.js kommen?

rudolfkoenig

Kann nicht nachvollziehen, bitte ganz genau beschreiben, am besten anhand eines Beispiels mit fhem.cfg.demo
Ich habe vor 2-3 Tage genau so ein Problem behoben, evtl. ist das Problem nach einem frischen update geloest.

FunkOdyssey

Okay, ich habe gerade festgestellt, dass der Fehler im Firefox nicht auftritt. Aber im Google Chrome Browser.

Es spielt auch keine Rolle, welches Style aktiviert ist.

Beschreibung:
- Ich befinde mich auf der FHEM Startseite
- Dann klicke ich auf den Menüpunkt "Logfile" mit der mittleren Maustaste
- das aktuelle Tab lädt das Logfile
- zeitgleich öffnet sich (gewollt) ein neues Tab und dort wird auch das Logfile geladen.

Wenn ich im Internet surfe, dann klicke ich ständig Seiten in neue Tabs, um diese danach "abzuarbeiten". Nun ist es bei FHEM jedoch der Fall, dass die im Hintergrund gewünschte Aktion leider auch im Vordergrund ausgeführt wird.

Mein FHEM ist up-to-date. Cache geleert. Etc.

Blackcat

Zitat von: rudolfkoenig am 15 Juli 2015, 17:10:43
Tritt das Problem immer noch auf? Ich habe vor 3 Tagen ein paar Probleme in diesem Bereich gefixt.
Falls ja, kannst du mir bitte ein konkretes Beispiel geben, was ich direkt testen kann?
Und auch beschreiben, was man erwartet.

Leider besteht das Problem immer noch.

Beispiel zum Nachstellen, bei dem es aufgefallen ist:

1. Ios6 style (z.b. Touchpad) ist ausgewählt.
2. pgm/ios6.js ist als JavaScript in der config angehängt

Sollzustand: bei Click auf das Logo klappt das Menü auf bzw. zu (nachvollziehbar mit der fhemweb.js Version vor dem 12.06.)

Istzustand: Menü klappt zu, reload der Page -> gesetzte klasse geht verloren somit ist das Menü immer noch geöffnet


Alternativ kannst du auch mit dem Code von oben testen, der ist nur auf das Problem reduziert

Vielen Dank schonmal  :)
Viele Grüße Sandra - FHEM Style Entwicklerin iOS6+12
-----
ZBox nano, Homematic, Homebridge, Hue + Mi Light, ZWave, Dyson, etc.
https://www.foodcat.de
https://www.youtube.com/c/FoodCat (hier gibt es auch immer mehr Hausautomatisierungsvideos)

rudolfkoenig

@FunkOdyssey: Das Problem trat bei mir ueberall auf (Shift-Click bzw. Meta-Click, verwende ich nie).
Ich habe es jetzt gefixt (update ab morgen), leider verstehe ich weder, warum das Problem auftrat, noch, warum mein Patch das verhindert. Wenn jemand mir die Ursache erklaeren koennte, waere ich dankbar.

@Blackcat: Du hast eine Funktion von FHEMWEB (Klick auf Icon leitet einen zu motd oder defaultRoom) geklaut, und jetzt, wo das Klauen nicht mehr klappt, soll der "Bestohlene" helfen, das funktioniert so nicht. :)
Stattdessen musst Du das Klauen perfektionieren: $(parentLink).unbind("click")

Ellert

Ich habe eine ähnliches Verhalten beobachtet. Wenn ich versuche einen Link auf der FHEM Startseite in einem neuen Tab zu öffen, z.B. zum Logfile, benutze ich die Kombination Strg+linke Maustaste. Es wird, wie gewünscht, ein neuer Tab mit dem Logfile geöffnet, aber gleichzeitig wird das Logfile in dem aktuellen Tab geöffnet. Ich habe dieses Verhalten beim Firefox beobachtet. Bei Benutzung der mittleren Maustaste wird das Logfile nur im neuen Tab geöffnet. Auch das Öffnen des Links über das Kontextmenü "Link in einem neuen Tab öffnen" funktioniert einwandfrei.

Blackcat

Zitat von: rudolfkoenig am 16 Juli 2015, 12:52:24
@Blackcat: Du hast eine Funktion von FHEMWEB (Klick auf Icon leitet einen zu motd oder defaultRoom) geklaut, und jetzt, wo das Klauen nicht mehr klappt, soll der "Bestohlene" helfen, das funktioniert so nicht. :)
Stattdessen musst Du das Klauen perfektionieren: $(parentLink).unbind("click")

Elstern klauen gerne das schöne, klitzernde und benutzen es für ihre Zwecke  :) Denn was eignet sich besser als Menü Button im mobilen Bereich als das schöne Logo  ;)

Aber du hast recht, ich sollte nochmal zu Lupin in die Schule gehen  ::)

Vielen Dank ! Da werden sich morgen mit dem Update wieder ein paar User freuen über geklaute Ware  ;D
Viele Grüße Sandra - FHEM Style Entwicklerin iOS6+12
-----
ZBox nano, Homematic, Homebridge, Hue + Mi Light, ZWave, Dyson, etc.
https://www.foodcat.de
https://www.youtube.com/c/FoodCat (hier gibt es auch immer mehr Hausautomatisierungsvideos)

Ellert

Nach dem Update heute morgen öffnet Strg+linke Maustaste einen Link immer noch im  aktuellen Tab und in einem Neuen.

FunkOdyssey

Soweit ich weiß ist Sourceforge down und beim Update Check wird mir (vermutlich daher) die neue Datei nicht angezeigt. Bist du also sicher, dass du die neue Version erhalten hast?

rudolfkoenig

Der update heute frueh ging leider schief, da sourceforge um 7:45 bereits down war.

Ellert

O.k., jetzt sehe ich es im Logfile, da ist kein fhemweb dabei.

FunkOdyssey

#13
Da das SCM ja nun wieder läuft, habe ich mir manuell die aktuelle Version von "fhemweb.js" geholt.
Jedoch habe ich leider immer noch das Problem in Google Chrome.
Oder habe ich da eine weitere Änderung übersehen?


Nachtrag: Hmm, irgendwie finde ich das entsprechende Commit nicht mehr wieder. Ist der Fix im SVN überhaupt angekommen?

Blackcat

Viele Grüße Sandra - FHEM Style Entwicklerin iOS6+12
-----
ZBox nano, Homematic, Homebridge, Hue + Mi Light, ZWave, Dyson, etc.
https://www.foodcat.de
https://www.youtube.com/c/FoodCat (hier gibt es auch immer mehr Hausautomatisierungsvideos)