Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Javascript в Ajax

Сообщения:  [1-10]    [11-20]  [21-30] 

 
 автор: Lors   (27.04.2009 в 18:39)   письмо автору
 
   для: PAT   (27.04.2009 в 13:58)
 

Слишком патетичный ответ. ) Ситуации бывают разные. Вы не понимаете сущности задачи, Ваш метод является только частичным решением проблемы. Он позволяет избежать использования функции eval(), но проблемы заключается не в этом.

  Ответить  
 
 автор: PAT   (27.04.2009 в 13:58)   письмо автору
 
   для: Lors   (26.04.2009 в 17:41)
 

>"Что касается eval(), то существуют ситуации когда его не использовать нельзя"
НЕТ таких ситуаций.

>"использовав eval получается, что общее время загрузки сократилось втрое"
Бред.

>"от eval мне всего то надо запустить 1 строку JS"
"Наше дело - предложить, ваше дело - отказаться" (с)

  Ответить  
 
 автор: Lors   (27.04.2009 в 13:08)   письмо автору
 
   для: PAT   (25.04.2009 в 21:38)
 

Так можно сделать и вместо eval использовать этот код, для обработки скрипта и внедрения в документ через DOM, взятого из дива.

  Ответить  
 
 автор: Lors   (26.04.2009 в 17:41)   письмо автору
 
   для: PAT   (26.04.2009 в 16:36)
 

с сервера приходит не только javascript а еще много, много, много чего другого, причем javascript может приходить, может не приходить. )
автор: Lors   (25.04.2009 в 14:50)


Что касается eval(), то существуют ситуации когда его не использовать нельзя, возможно это и плохо, но с другой стороны, если взглянуть в общем, то использовав eval получается, что общее время загрузки сократилось втрое (в моем случаи), то есть при старой архитектуре все тормозило (почти не тормозило) гораздо сильнее. а теперь тормозит (вообще не тормозит) в 3 раза меньше, тем более что от eval мне всего то надо запустить 1 строку JS. :)

  Ответить  
 
 автор: PAT   (26.04.2009 в 16:36)   письмо автору
 
   для: Lors   (26.04.2009 в 14:54)
 

eval - самый тормозящий метод изо всех существующих.
Употреблять метод eval любой нормальный программёр считает для себя стыдным.
Это тоже самое, что копаться в песочнице мобильным телефоном (помните анекдот?)

В общем, если не поняли, то объясню на пальцах: не формируйте на сервере теги <script></script>, а передавайте странице только JS-код. Тогда вам не надо будет засовывать в див, потом читать это и эвалировать. Способ создания тега script и обработки в нем полученного с сервера JS-кода смотри выше -
автор: PAT   (26.04.2009 в 00:23)
.

  Ответить  
 
 автор: Lors   (26.04.2009 в 14:54)   письмо автору
 
   для: PAT   (25.04.2009 в 21:42)
 

потому что Ajax я для того и использую что бы не перезагружать всю страницу. Там в коде видно что ajax содержимое скидывается в div. Есть другие варианты?) Ресурс таким образом устроен, что перезагрузки страницы вообще нет, только в одном диве меняется контекст. вот теперь появилось необходимость в зависимости от ответа сервера скидывать в этот див или в другой, потому и надо "серверный" ява скрипт делать читабельным. Я вчера посидел и решил скинуть в невидимый div содержимое js, потом обращаться через getElementById в момент ответа, то есть

if (request3.readyState == 4 && request3.status == 200)
                        {
                            obj.innerHTML = request3.responseText;
                            alert(document.getElementById('t').innerHTML);
                        }


к этому диву и прогонять ЭТО через eval(), вроде как все работает. Время покажет стоило ли изобретать велосипед или нет.))

  Ответить  
 
 автор: ddhvvn   (26.04.2009 в 13:11)   письмо автору
 
   для: PAT   (26.04.2009 в 00:23)
 

Да, теперь везде работает, спасибо.

  Ответить  
 
 автор: PAT   (26.04.2009 в 00:23)   письмо автору
 
   для: ddhvvn   (25.04.2009 в 22:01)
 

В ИЕ тоже работает, но со своими особенностями. В общем, держите кроссбраузерный код:
<html>
<head>
<script>
//положим, получили от сервера респонс-текст, содержащий JS-код:
var x = "alert ('YES');\ndocument.body.style.backgroundColor = 'red';";

function myFunc ()
{
var y = document.createElement ('script');
y.defer = true;
y.text = x;
document.body.appendChild (y);
}
</script>
</head>
<body>
<hr><h1 align="center" onclick="myFunc ()">Click</h1><hr>
</body>
</html>

  Ответить  
 
 автор: ddhvvn   (25.04.2009 в 22:01)   письмо автору
 
   для: PAT   (25.04.2009 в 21:38)
 

хм проверил,
но пока нигде кроме как в ИЕ6-8 не заставил работать..
как нужно прописывать? я пробовал <script defer> и как в w3 <script defer="defer">

а ^пример^ работает везде, кроме ИЕ

  Ответить  
 
 автор: PAT   (25.04.2009 в 21:42)   письмо автору
 
   для: Lors   (25.04.2009 в 15:24)
 

>"Вот такой вот innerHTML приходит через ajax, но скрипт не работает."

А теги <body>, </body> и <!DOCTYPE> через ваш ajax, видимо, не приходят?
А почему? :-)))

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-30] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования