js方法失败(抛出异常?),哪个firebug不报告

时间:2011-05-31 20:03:51

标签: javascript firebug

以下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。

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]