2011-05-31 66 views
2

下面的JS方法不返回,但Firebug的報告也不例外:JS方法失敗(拋出異常?),這螢火不報告

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行:

return !!(a.compareDocumentPosition(b) & 16); 

,其中a是navlinks DIV和b是未定義的。不應該在控制檯中報告異常?

可以肯定,運行在Firebug控制檯產生以下既不錯誤消息也沒有返回結果:

return document.getElementById('navlinks').compareDocumentPosition(undefined); 

編輯:我使用的是Firefox 4.0.1和1.7.1的Firebug。

回答

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]