JS метод не удается (выбрасывает исключение?), о котором firebug не сообщает - PullRequest
2 голосов
/ 01 июня 2011

Следующий метод 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. Метод завершается (бросает, я полагаю) при вызове метода содержимого в строке 4639 из jquery1.5.1:

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

, где a - это div для ссылок, а b не определено. Не должен ли firebug сообщать об исключении в консоли?

Конечно, выполнение следующего в консоли firebug не выдает ни сообщения об ошибке, ни результата возврата:

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

РЕДАКТИРОВАТЬ: я использую Firefox 4.0.1 и Firebug 1.7.1.

1 Ответ

1 голос
/ 01 июня 2011

Да, должно быть исключение;Я, конечно, получаю версию с 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]
...