众所周知Visual Studio 2013中有一个由SignalR机制实现的Browser Link功能,意思是开发人员可以同时使用多个浏览器进行调试,当按下IDE中的Browser Link按钮后,开发中对页面的更改会同步到所有已连接的浏览器中。Browser Link按钮就是位于浏览器调试按钮右边的一个类似“刷新”的按钮:

Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则-LMLPHP

最近在开发apworks.org的新版本(之前因为供应商的问题导致网站全部瘫痪,我也一直没来得及修复,索性自己重新打造一个,顺便也验证Apworks框架的可用性),发现在使用syntaxhighlighter插件的页面上,以前没有问题的页面现在出现了如下错误:

Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则-LMLPHP

研究了很久,一直以为是jquery或者syntaxhighlighter的版本引起的,反复测试了很长时间都没有解决问题。最后发现,在出现错误的脚本中,有以下这段注释:

Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则-LMLPHP

突然发现SignalR关键字,顿时觉得是由于Visual Studio 2013的Browser Link功能引起的,于是打算关闭该功能试试。在Browser Link按钮右边的下拉菜单中,找到Enable Browser Link选项,将其左边的钩钩去掉,如下:

Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则-LMLPHP

再次运行程序,发现错误信息已经没有再出现了。其实,Browser Link功能就是Visual Studio 2013在启动浏览器后,在已有的HTML文档中注入了一段使用SingalR协助调试的代码,这可以通过Developer Tools看到:

Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则-LMLPHP

希望本文会对遇到类似问题的朋友有所帮助。当使用Visual Studio 2013开发Web应用程序,并出现了神奇的javascript错误时,可以试试本文所述的方法。

04-14 22:53