Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> eval и опера 
:(
    Опции темы
Pokoinik
Дата 29.12.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 1
Всего: 3



Почему эта функция в опере выдает ошибку? smile 

Код

function addTag(id, proc) {
    var value = $(id).attr("value");
    $.get("/admin/index.php", {
                lang: CurrentSiteLanguage,
                controller: 'addtag',
                tag: value
    }, eval("function(data, status){ eval('"+proc+"'); }"));
    //}, eval("function(data, status){ eval('"+proc+"'); }"));
}

Event thread: click
Error:
name: SyntaxError
message: Statement on line 21: Syntax error in call to eval: line 1 : 
function(data, status){ eval('tree.loadTags();'); }
----------^
Backtrace:
  Line 21 of inline#1 script in http://cms/admin/
    $.get("/admin/index.php", {lang : CurrentSiteLanguage, controller : "addtag", tag : value}, eval("function(data, status){ eval('" + proc + "'); }"));
  Line 1 of  script 
    addTag("#tree_addTag_field", "tree.loadTags();");
  At unknown location
    [statement source code not available]


Это сообщение отредактировал(а) Pokoinik - 29.12.2007, 16:34


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
Ghirik
Дата 29.12.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

Почему эта функция в опере выдает ошибку?
 

А хрен его знает!  smile 
Такие вопросы нужно в разделе для профи задавать. Это они телепатией владеют. А здесь страницу с косяком положите, может и найдется причина.




--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
ksnk
Дата 29.12.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Вотзможно, опера не любит выполнять пустую работу? Что хотелось получить описывая eval'ом анонимную функцию?

Вот такой код у меня вызывает ошибку в Опере
Код

proc="alert(1);"
eval("function(data, status){ eval('"+proc+"'); }")

А вот такой - нет
Код

proc="alert(1);"
eval("var x=function(data, status){ eval('"+proc+"'); }")



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Pokoinik
Дата 29.12.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 1
Всего: 3



Ghirik, на странице с косяком еще 250kb js кода, я сомневаюсь, что кому-то захочется в нем кавыряться...

ksnk, спасибо


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
SelenIT
Дата 30.12.2007, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Может, тут лучше вместо внешнего eval-а воспользоваться конструктором Function()?



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
AKS
Дата 30.12.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(SelenIT @  30.12.2007,  01:38 Найти цитируемый пост)
Может, тут лучше вместо внешнего eval-а воспользоваться конструктором Function()?

Насколько можно судить по первому сообщению, тут вообще можно было бы обойтись без лишних конструкций - там ведь итак передается функция, просто ее вызов зачем-то "спрятан" в кавычки (грубо говоря - налицо серьезные ошибки в разработке).
На всякий случай, пример:
Код

addTag("#tree_addTag_field", tree.loadTags); // function call

function addTag(id, callback) {
    $.get("/admin/index.php",
          { 
            lang: CurrentSiteLanguage,
            controller: 'addtag',
            tag: $(id).attr("value")
          },
          callback);
};


Ну а продолжая тему с eval, можно заметить, что для того, чтобы Opera не "пугалась", и там, где она "ждет" expression, ей надо явно преподнести выражение (например, используя оператор группировки, заключив функцию в скобки () ). В IE, кстати, такой "трюк" не пройдет - он будет воспринимать функцию, как декларированную, и eval будет возвращать undefined (следовательно, в любом случае история с eval - "дохлый номер")...


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1026 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.