Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JQuery 3 and SignalR 2.2.0

I use SignalR 2.2.0 in a MVC5 project. SignalR depends of JQuery in client-side.

JQuery recently released new version, I updated it from Nuget, specifically from version 2.2.4 to 3.0.0.1, but then SignalR stopped working. Startup command "$.connection.hub" in javascript fails. After a long time head scratching, I downgrade JQuery to 2.2.4 and everything is fine again.

Am I the only one getting this problem? There is any workaround?

Thanks.

like image 271
TNT Avatar asked Jun 21 '16 18:06

TNT


3 Answers

You must edit the signalR code by yourself, In jquery 3 they removed the shortcut for load event :

Breaking change: .load(), .unload(), and .error() removed

These methods are shortcuts for event operations, but had several API limitations. The event .load() method conflicted with the ajax .load() method. The .error() method could not be used with window.onerror because of the way the DOM method is defined. If you need to attach events by these names, use the .on() method, e.g. change $("img").load(fn) to $(img).on("load", fn).

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

so in the file jquery.signalR-{version}.js :

you must update this line :

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

To :

_pageWindow.on("load",function () { _pageLoaded = true; }); 
like image 126
Quentin Roger Avatar answered Oct 01 '22 03:10

Quentin Roger


You must edit the signalR code by yourself, In jquery 3 they removed the shortcut for load event :

Breaking change: .load(), .unload(), and .error() removed

These methods are shortcuts for event operations, but had several API limitations. The event .load() method conflicted with the ajax .load() method. The .error() method could not be used with window.onerror because of the way the DOM method is defined. If you need to attach events by these names, use the .on() method, e.g. change $("img").load(fn) to $(img).on("load", fn).

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

so in the file jquery.signalR-{version}.js :

you must update this line :

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

To :

_pageWindow.on("load",function () { _pageLoaded = true; });
like image 21
Quentin Roger Avatar answered Oct 13 '22 21:10

Quentin Roger


Finally version 2.2.1 of SignalR was released, solving this problem. Thanks for all comments.

like image 20
TNT Avatar answered Oct 13 '22 21:10

TNT