jQuery Problem seit heutigem Update

Begonnen von fhainz, 11 Januar 2015, 11:30:37

Vorheriges Thema - Nächstes Thema

fhainz

Hallo Rudi,

Zitat von: rudolfkoenig am 11 Januar 2015, 10:51:11
Das hier zeigt, dass jQuery nicht geladen wurde.
1. Das aktuelle FHEMWEB laedt jquery automatisch
2. Das aktuelle fhemweb.js laedt jquery auch automatisch nach, wenn es nicht geladen werden sollte (FLOORPLAN Kompatibilitaet).

P.S. Bitte Probleme nicht mischen, hat nicht mit SVG zu tun.

Laut Quellcode und Ressourcen Übersicht in Safari wird jQuery geladen, siehe Screenshots. Floorplan verwende ich nicht.

Hast du eine Idee was ich noch versuchen könnte?


Grüße



rudolfkoenig

Die Fehlermeldung in der Zeile 119 ist irritierend: windows.jQuery ist definiert, aber $ nicht. Ich kann es nicht erklaeren.

Dur verwendest fronthemEditor. Hast du das Problem auch ohne?
Wenn nicht: kannst du im FHEMWEB.js den Block nach "Other JavaScripts + their Attributes" vor dem Block "FW Extensions" (direkt drueber) verschieben, und pruefen ob es geht? Mit Block meine ich Zeilen bis zur naechsten Leerzeile.

herrmannj

Hallo, das ist korrekt.

Der fhem eigene loader war so lange defekt und unbrauchbar das ich (nach Vorankündigung  ;) ) auf den noconflict Modus ausweichen musste. fhemweb.js sollte bitte das Standardverfahren zum laden von jquery anwenden.

Der Hintergund und die Notwendigkeit für fronthem war: der fronthem Editor wird, je nach Situation, vor anderen scripten geladen und lädt auch jquery ui. Nachfolgendes (unsachgemäßes) von jquery initialisiert jquery neu - und schrottet das bereits initialisierte jquery ui.

Der Fehler liegt in fhemweb.js dort bitte entsprechend anpassen.

vg
jörg

fhainz

Zitat von: rudolfkoenig am 11 Januar 2015, 11:56:51
Dur verwendest fronthemEditor. Hast du das Problem auch ohne?
Ohne fronthem gibt es keine Probleme.

Zitat von: rudolfkoenig am 11 Januar 2015, 11:56:51
Wenn nicht: kannst du im FHEMWEB.js den Block nach "Other JavaScripts + their Attributes" vor dem Block "FW Extensions" (direkt drueber) verschieben, und pruefen ob es geht? Mit Block meine ich Zeilen bis zur naechsten Leerzeile.
Diese Änderung in der 01_FHEMWEB.pm hat funktioniert!

Grüße



rudolfkoenig

ZitatDer Fehler liegt in fhemweb.js dort bitte entsprechend anpassen.
Grosse Worte. Und wie geht "das Standardverfahren"?


ZitatDiese Änderung in der 01_FHEMWEB.pm hat funktioniert!
Danke, habs auch eingecheckt.

herrmannj

Hi,

der fehler liegt trotzdem in fhemweb.js. Es wird auf windows.jquery === defined getestet obwohl $ verwendet wird. Zur Erinnerung: JEDES (!) beliebige framework darf $ umdefinieren - das passiert auch praktisch in the wild !

Hier (fhemweb.js) muss mit closures gearbeitet werden:

(function($) {
...
})(jquery);


oder $ muss korrekt von fhemweb mit jquery insitialisiert werden. Fronthem macht genau dies nicht um Platz für alle anderen zu lassen.

vg
jörg

rudolfkoenig

Verstehe ich nicht.
- erstens was du mit der Funktion meinst
- zweitens will ich jquery so wie es ueblich ist (mit $) verwenden, sonst kann man X Bibliotheken vom Netz, die jQuery verwenden, nicht ohne weiteres in FHEM verwenden.
- drittens ist mir schon klar, dass wenn ein anderes Framework z.Bsp. die Variable FW_root fuer sich beansprucht, dann fhemweb.js nicht mehr funktioniert, aber dan muss sich halt einer der beiden anpassen, oder sie koennen nicht gemeinsam verwendet werden.

herrmannj

Zitat von: rudolfkoenig am 11 Januar 2015, 14:18:55
Verstehe ich nicht.
- erstens was du mit der Funktion meinst
- zweitens will ich jquery so wie es ueblich ist (mit $) verwenden, sonst kann man X Bibliotheken vom Netz, die jQuery verwenden, nicht ohne weiteres in FHEM verwenden.
Beide Fragen findest Du hier gut beantwortet:
http://stackoverflow.com/questions/4472528/javascript-jquery-closure-function-syntax

Zitat
- drittens ist mir schon klar, dass wenn ein anderes Framework z.Bsp. die Variable FW_root fuer sich beansprucht, dann fhemweb.js nicht mehr funktioniert, aber dan muss sich halt einer der beiden anpassen, oder sie koennen nicht gemeinsam verwendet werden.
ja stimmt, ist aber nicht vergleichbar. Aber um mal die Emotionen raus zunehmen: so ist es ja gelöst, vielen Dank. Nun muss ich mal schauen ob das im editor noch passt oder ob ich da nochmal gefordert bin und wenn der loader dann vernünftig funktioniert wäre ich sehr froh auf das doppelte laden (noconflict) zukünftig verzichten zu können

reichi

@hermanj: wenn du eine 2. jQuery Instanz hast musst $.noConflict( true ) rufen.

ZitatIf for some reason two versions of jQuery are loaded (which is not recommended), calling $.noConflict( true ) from the second version will return the globally scoped jQuery variables to those of the first version.

quelle: http://api.jquery.com/jquery.noconflict/

herrmannj

#9
ja genau, vielen Dank. wobei das ja nur ein work-around war weil mir ständig dashboard und co den jquery-ui abgeschossen haben.

Wenn das mit dem neuen loader jetzt läuft nehme ich das liebend gern raus, frisst nur Speicher. Ich schau mir das mit dem aktuellen update an und wenn es funktioniert hat noconflict seine Berechtigung verloren :-) gemocht habe ich das nie ...

Danke und vg
jörg

edith - hier war ja der Punkt das $ wieder freigegeben ist, fhemweb erst danach jquery defined prüft und erkennt. $ ist und bleibt dann unbesetzt.