Прерывистая проблема с JavaScript - PullRequest
0 голосов
/ 23 сентября 2010

Я использую JavaScript через eval (я знаю, стреляйте в меня), который в основном перечисляет все свойства объекта документа.Моя проблема в том, что, хотя он работает в firebug, он запускает не реализованное исключение в Firefox при запуске из скрипта.

Ссылка на скрипт JavaScript, выброшенное исключение и работающая команда firebug.

Есть какие-нибудь предложения относительно того, что здесь происходит?

Для справки, это делается на Firefox 3.6.10 на 64-битной Ubuntu 10.04, и в chrome такой проблемы нет.

1 Ответ

2 голосов
/ 23 сентября 2010

Ошибка здесь:

console.log(result);

удалите эту строку, и все должно быть в порядке.

Объект console - это вещь Firebug (относится к консоли Firebug).В Safari / Chrome также реализован объект console (относится к консоли Webkit js).Firefox, действительно, другие браузеры не имеют консольного объекта.Так что выдает ошибку.

Кстати: как обычно, уловки совершенно не нужны.Это в точности эквивалентный код:

for (key in document) {
    result[i] = typeof document[key];
    result[i+1]="document."+key;
    i+=2;
}

Если вы настаиваете на его вызове request, тогда используйте его как ссылку:

var request = window.document;
for (key in request) {
    result[i] = typeof request[key];
    result[i+1]=request+"."+key;
    i+=2;
}

Если вы настаиваете на передаче имен объектов по строке,тогда ради здравомыслия используйте eval в менее запутанном виде:

var string = "window.document";
eval("var request ="+string);
for (key in request) {
    result[i] = typeof request[key];
    result[i+1]=request+"."+key;
    i+=2;
}

Хотя я бы не стал этого делать (иногда это необходимо, но очень редко).

...