以下js方法不会返回,但firebug报告没有异常:
function test_contains_doesNotBailWithoutException() {
$.contains(document.getElementById('navlinks', undefined));
// This line should be reached, or you should get an exception message in Firebug.
return true;
}
其中navlinks是页面上存在的东西,而$来自jquery 1.5.1。在jquery1.5.1的第4639行调用contains方法时,该方法退出(抛出,我假设):
return !!(a.compareDocumentPosition(b) & 16);
其中a是navlinks div,b是未定义的。 firebug不应该在控制台中报告异常吗?
可以肯定的是,在firebug控制台中运行以下命令既不会产生错误消息也不会产生返回结果:
return document.getElementById('navlinks').compareDocumentPosition(undefined);
编辑:我正在使用Firefox 4.0.1和Firebug 1.7.1。
答案 0 :(得分:1)
是的,应该有例外;我当然得到一个JavaScript版本:
Error: uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOM3Node.compareDocumentPosition]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: javascript:alert(document.body.compareDocumentPosition(undefined)) :: <TOP_LEVEL> :: line 1" data: no]
或jQuery版本中的相同内容(在您的示例中有一个错误位置的括号......并不重要,因为缺少的参数自然会被undefined
填入):
Error: uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOM3Node.compareDocumentPosition]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js :: <TOP_LEVEL> :: line 16" data: no]