JQuery 3和SignalR 2.2.0

TNT*_*TNT 19 asp.net-mvc jquery signalr

我在MVC5项目中使用SignalR 2.2.0.SignalR依赖于客户端的JQuery.

JQuery最近发布了新版本,我从Nuget更新了它,特别是从2.2.4升级到3.0.0.1,但是SignalR停止了工作.javascript中的启动命令"$ .connection.hub"失败.经过长时间的努力,我将JQuery降级到2.2.4并且一切都很好.

我是唯一一个遇到这个问题的人吗?有什么解决方法吗?

谢谢.

Que*_*ger 18

您必须自己编辑signalR代码,在jquery 3中,他们删除了load事件的快捷方式:

中断更改:.load(),. unload()和.error()已删除

这些方法是事件操作的快捷方式,但有几个API限制.事件.load()方法与ajax .load()方法冲突.由于DOM方法的定义方式,.error()方法无法与window.onerror一起使用.如果需要通过这些名称附加事件,请使用.on()方法,例如将$("img").load(fn)更改为$(img).on("load",fn).

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

所以在文件中jquery.signalR-{version}.js:

你必须更新这一行:

_pageWindow.load(function () { _pageLoaded = true; });
Run Code Online (Sandbox Code Playgroud)

至 :

_pageWindow.on("load",function () { _pageLoaded = true; });
Run Code Online (Sandbox Code Playgroud)

  • SignalR 开发人员必须立即进行此更改。 (2认同)

TNT*_*TNT 16

最后发布了SignalR 2.2.1版,解决了这个问题.感谢所有评论.

  • 2.2.2 版似乎解决了这个问题,它与 Jquery 3.1.1 兼容。 (2认同)