2016-06-21 14 views
13

Ich benutze SignalR 2.2.0 in einem MVC5-Projekt. SignalR hängt von JQuery auf der Client-Seite ab.JQuery 3 und SignalR 2.2.0

JQuery hat vor kurzem eine neue Version veröffentlicht, ich habe sie von Nuget aktualisiert, speziell von Version 2.2.4 zu 3.0.0.1, aber dann hat SignalR aufgehört zu arbeiten. Startbefehl "$ .connection.hub" in Javascript schlägt fehl. Nach einer langen Zeit Kopf kratzen, ich Downgrade JQuery auf 2.2.4 und alles ist wieder in Ordnung.

Bin ich der Einzige, der dieses Problem hat? Es gibt eine Problemumgehung?

Danke.

Antwort

9

Schließlich Version 2.2.1 von SignalR war wieder da vermietet, dieses Problem zu lösen. Danke für alle Kommentare.

+0

interessanterweise keine Erwähnung von jQuery 3 in den Versionshinweisen, aber hier sind sie trotzdem: https://github.com/SignalR/SignalR/releases –

+0

Blick auf jquery.signalR-2.2.1.js. Ich finde zum Beispiel immer noch jQuery.fn.unbind(). Ich denke nicht, dass singalR 2.2.1 ist noch vollständig bereit für jquery 3 – gsharp

+0

Version 2.2.2 scheint dies zu heilen, es ist kompatibel mit Jquery 3.1.1, wie es kommt. –

12

Sie müssen den signalR Code selbst bearbeiten, in jquery 3 sie die Abkürzung für Load-Ereignis entfernt:

Brechen Änderung: .load(), .unload() und .error() entfernt

Diese Methoden sind Abkürzungen für Ereignisoperationen, hatten jedoch mehrere API-Einschränkungen. Die Ereignismethode .load() steht im Konflikt mit der Methode ajax .load() . Die Methode .error() konnte nicht mit window.onerror verwendet werden, da die DOM-Methode definiert ist. Wenn Sie Ereignisse mit diesen Namen verknüpfen möchten, verwenden Sie die .on() - Methode, z. ändere $ ("img"). load (fn) bis $ (img) .on ("load", fn).

https://jquery.com/upgrade-guide/3.0/

so in der Datei jquery.signalR-{version}.js:

Sie diese Zeile aktualisieren müssen:

_pageWindow.load(function() { _pageLoaded = true; }); 

An:

_pageWindow.on("load",function() { _pageLoaded = true; }); 
+0

Arbeitete für mich auch. –

+0

SignalR Entwickler müssen diese Änderung jetzt vornehmen. –

+0

Ich hatte dieses Problem in Version 1.2.2 und das funktionierte für mich. Vielen Dank! – eaglei22

0

Wenn Sie immer noch Fehler wie diese immer zu 2.2.1 und jQuery 3.x nach dem Update dann lesen Sie weiter ...

TypeError: Cannot read property 'client' of undefined 

Wie ich Sie sind wahrscheinlich die dynamically generated proxy verwenden und überprüft Ihre /signalr/hubs Datei und gefunden, dass Sie keine Proxys definiert haben.

var proxies = {}; 

Warte, dass du fragen kannst, ich habe nichts geändert - wohin sind sie gegangen?

Nun, wie ich Sie wahrscheinlich waren so eilig signalR zu 2.2.1 zu aktualisieren, dass Sie es in all Ihren Projekten zu tun, vergessen und jetzt sind Sie sowohl 2.2.1 und 2.2.0 in verschiedenen Baugruppen. (Ich definiere meine Hubs in einer anderen Baugruppe als meine Haupt-App).

Alles, was ich tun musste, war sicherzustellen, dass ich die neueste nugget-Paketversion in jedem Projekt hatte und alles funktionierte. Sollte nach dem Umbau gut funktionieren.If not, this may also help.

Tun Sie sich auch einen Gefallen und lesen Sie die jQuery 3 upgrade guide, wenn Sie viel jQuery woanders verwenden.