Как вставить JavaScript в приложение AJAX Django? - PullRequest
0 голосов
/ 04 августа 2011

У меня есть приложение Django, в котором основной контент часто меняется при загрузке AJAX.Так как мне нужно запустить много javascript для недавно загруженного контента, то, что я сейчас делаю, это включаю блок javascript с несколькими document.ready и другими функциями в конце загруженного шаблона HTML.

Этоправильный способ загрузки JavaScript на AJAX загруженный контент?Если я заменю блок контента на новые (загруженные AJAX) сценарии HTML +, удаляются ли старые сценарии без ошибок?

Существуют ли инструменты мониторинга для обнаружения использования JavaScript / памяти?Я сталкиваюсь с некоторыми сбоями страниц, поэтому я подозреваю, что произошли некоторые утечки.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

ИМХО, вам следует избегать вставки кода JavaScript в элементы загрузки страницы AJAX.Это не лучший способ сделать это.Почему вы не можете создать функцию javascript и активировать ее после завершения загрузки AJAX?Или поместите его на событие щелчка или наведения мыши ...

JavaScript Onclick:

<a class="orange" 
   onclick="return voteClick(this, '{{ item.pk }}', '1', '{% url ajaxvote %}')" 
   href=''>Button text</a>

и затем в вашем сценарии:

function voteClick(self, pk, multiplier, url){
   //some actions function makes
   //for e.g. making POST or changing DOM
   // you can use vars that are generated by django template system 

   return false;
};

jQuery Way:

$.post(url, { param1: value1, param2: value2 }, function(data){
        //some function actions upon your AJAX complete
        //call your function with code here
        // you can load some 'data' for this script from django
        // and not the whole script
        voteClick(self, value1, value2, data);
        return false;
    } //end function
);//end POST

Вы можете прочитать больше об этом: jQuery POST

Итак, основная идея заключается в том, что вы должны загрузить скрипт какстатический контент из вашего MEDIA_ROOT и передать ему некоторые необходимые параметры.Это сложный способ загрузить ваши скрипты с помощью функций live ().Вы должны позаботиться о трассировке множества функций и параметров.

Конечно, если вы используете jQuery, легко отслеживать события кода с помощью его селекторов.Но опять же ... Зачем вам нужно загружать код с AJAX-запросом?Это определенно статический файл, который будет использоваться здесь, как ваш файл скриптов ...

0 голосов
/ 04 августа 2011

Вам определенно следует использовать .live(), а не включать новые блоки javascript в загруженный html-контент:

http://api.jquery.com/live/

Из документов:

Метод .live () может воздействовать на элементы, которые еще не были добавлены в DOM, с помощью делегирования событий: обработчик, связанный с элементом-предком, отвечает за события, которые запускаются на его потомках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...