我正在维护一个已经构建好的网站应用程序,我的任务是将 SignalR 库添加到其中,以便在用户之间异步工作。
一旦添加了 SignalR 库,它们就会与之前添加的 jQuery 发生冲突。为了解决冲突,我使用了 jquery.noconflict()
。虽然它取得了一些进展,但我发现应用程序会来回切换到 JavaScript 库,因此,全局引用“$”将在某个时候返回到 SignalR 或 jQuery,并且某些功能将不起作用相应地。
经过多次尝试,我发现最好的组合是:
[![jQuery.NoConflict][1]][1]
。这种组合有效,但 SignalR 库不断给出运行时错误消息。此错误不会影响任何请求的功能,我只是忽略它并且一切运行良好。此外,此消息不会在 chrome 和 edge 中显示,而是在 IE 中显示。
一个可以接受的解决方案是阻止此消息出现。有没有人有办法实现这一目标?我无法触摸现成的库以在任一库中添加 try-catch 块..
这是我添加 jQuery 和 SignalR 库的顺序
<script src="JQ/jquery.js"></script>
<script src="JQ/jquery-ui.js"></script>
<script src="JQ/Dialogs/jsDialog.js"></script>
<link href="JQ/jquery-ui.css" rel="stylesheet" />
<script src="Scripts/jquery-3.4.1.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="signalr/hubs"></script>
<script>var jQuery_1_1_3 = $.noConflict(true);
jQuery_1_1_3(function () {
var chat = jQuery_1_1_3.connection.chatHub;
{
chat.client.broadcastMessage = function (name, message) {
document.location.reload();
};
}
//alert('start')
jQuery_1_1_3.connection.hub.start().done(function () {
alert('Hub started');
});
});
</script>
<script src="JQ/jquery.js"></script>
<script src="JQ/jquery-ui.js"></script>
<script src="JQ/Dialogs/jsDialog.js"></script>
<link href="JQ/jquery-ui.css" rel="stylesheet" />