JQuery 3 and SignalR 2.2.0

后端 未结 3 1840
离开以前
离开以前 2020-12-15 19:04

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 ver

相关标签:
3条回答
  • 2020-12-15 19:06

    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; });
    
    0 讨论(0)
  • 2020-12-15 19:20

    If you're still getting errors like this after updating to 2.2.1 and jQuery 3.x then read on...

    TypeError: Cannot read property 'client' of undefined
    

    Like I am you are probably using the dynamically generated proxy, and you checked your /signalr/hubs file and found you don't have any proxies defined.

     var proxies = {};
    

    Wait you may ask I didn't change anything - where did they go?

    Well, like me you probably were in such a hurry to upgrade signalR to 2.2.1 that you forgot to do it in all your projects and now you are using both 2.2.1 and 2.2.0 in different assemblies. (I am defining my hubs in a different assembly than my main app).

    All I needed to do was make sure I had the latest nuget package version in every project and it all worked. Should work fine after rebuilding. If not, this may also help.

    Also do yourself a favor and read the jQuery 3 upgrade guide if you use much jQuery elsewhere.

    0 讨论(0)
  • 2020-12-15 19:30

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

    0 讨论(0)
提交回复
热议问题