#javascript #firebug
#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. Метод завершается (я полагаю, выбрасывает) при вызове метода contains в строке 4639 jquery1.5.1:
return !!(a.compareDocumentPosition(b) amp; 16);
где a — это navlinks div, а b не определено. Разве firebug не должен сообщать об исключении в консоли?
Чтобы быть уверенным, выполнение следующего в консоли firebug не выдает ни сообщения об ошибке, ни возвращаемого результата:
return document.getElementById('navlinks').compareDocumentPosition(undefined);
РЕДАКТИРОВАТЬ: я использую Firefox 4.0.1 и Firebug 1.7.1.
Ответ №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]