当我浏览我的ASP .NET站点时,我在使用Internet时得到以下JQuery异常。另外,我正在为ASP .NET和Visual 2012使用Telerik控件套件。

如果我检查ScriptResource.axd?d=中的行号..。(Telerik的档案):
/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
a.querySelectorAll("*,:x"), //Line 10673
s.call(a,"[s!='']:x"), //Line 10898在我的jquery-2.1.0.min.js中
/*! jQuery v2.1.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
a.querySelectorAll("*,:x") //Line 10357
q.call(a,"[s!='']:x") //Line 10571在这两个文件中,我得到了相同的两个句子中的一个例外。这些异常并不会导致异常行为,但我不喜欢在Visual中看到它们,因为可能存在某种错误的信号。
注意:如果我删除Telerik的JQuery或标准JQuery,错误仍然存在。即使我将Telerik的JQuery设置为使用standar,错误仍然存在。此外,控制台中没有错误。
发生什么事了呢?
发布于 2017-02-04 18:55:27
简短回答:
jquery没有什么问题--有时它自己做“肮脏”的事情来使你的手干净,因为有时没有“干净”的方法来做需要做的事情。
TLDR;
长答案:
在这两种情况下,您似乎都看到了从jQuery捕获了错误,因为根据Telerik文档的说法,有些Telerik控件依赖于jQuery --因此可以将jQuery作为开箱即用。
关于异常--在jQuery加载之后,它执行一个特性检测--如您所知,每个浏览器/版本的浏览器行为都是不同的,而且如果不支持特性,通常不尝试使用特性并捕获异常,就无法进行检测。
例如,第一个异常(在a.querySelectorAll("*,:x")上)发生在jquery对document.querySelectorAll支持的选择器进行功能检测时,您可以通过在github搜索或在任何非缩小的jquery文件中找到它。
// Opera 10-11 does not throw on post-comma invalid pseudos
el.querySelectorAll("*,:x");
rbuggyQSA.push(",.*:");正如您所看到的,只要页面上有jquery,就无法避免它的预期行为。
发布于 2017-02-09 10:16:53
jQuery团队在某些情况下对逻辑流使用异常。他们使用assert函数对每个浏览器进行特征检测。如果您查看jQuery代码,您可以发现如下所示的断言函数
function assert( fn ) {
var el = document.createElement("fieldset");
try {
return !!fn( el );
} catch (e) {
return false;
} finally {
// Remove from its parent by default
if ( el.parentNode ) {
el.parentNode.removeChild( el );
}
// release memory in IE
el = null;
}
}为了解决这个问题,我创建了一个使用asp.net 3.1.1的示例jQuery网页。当我在本地运行网页时,选择Internet并在Visual中运行它,会引发如下异常
...
'iexplore.exe' (Script): Loaded 'Script Code (Windows Internet Explorer)'.
Exception was thrown at line 1361, column 4 in http://localhost:63177/Scripts/jquery-3.1.1.js
0x800a139e - JavaScript 実行時エラー: SyntaxError
Exception was thrown at line 1379, column 4 in http://localhost:63177/Scripts/jquery-3.1.1.js
0x800a139e - JavaScript 実行時エラー: SyntaxError
Exception was thrown at line 37, column 60610 in http://localhost:63409/15db952270ca47e19969bb659e432c6d/browserLink
0x800a139e - JavaScript 実行時エラー: SyntaxError
The thread 0x5250 has exited with code 0 (0x0).
...查看jQuery 3.1.1代码中的第1361和1379行,您会发现这些错误是故意引发的。
第1360-1361行
// Opera 10-11 does not throw on post-comma invalid pseudos
el.querySelectorAll("*,:x");第1377-1379行
// This should fail with an exception
// Gecko does not error, returns false instead
matches.call( el, "[s!='']:x" );由于异常已被处理,jQuery团队不认为这是一个问题。您可以将类似的问题引用为下面的链接https://bugs.jquery.com/ticket/14123
这是jQuery的代码,所以我认为你可以保留它的原样。
发布于 2017-02-09 19:29:27
如果此问题仅在调试Visual中的网站/页时发生,请尝试禁用Visual ->浏览器链接选项,使用相应的工具栏项或向Web.config添加以下键:
<appSettings>
<add key="vs:EnableBrowserLink" value="false"/>
</appSettings>请参考以下线程了解有关上述JavaScript错误的不同已知浏览器链接效果(类似于您的浏览器链接效果)的更多信息:
VS 2013浏览器链接生成脚本导致jQuery引用在使用RequireJS时中断
https://stackoverflow.com/questions/41960668
复制相似问题