Найти - Пользователи
Полная версия: Не обрабатывается Django блок с jQuery кодом в шаблонах.
Начало » Django » Не обрабатывается Django блок с jQuery кодом в шаблонах.
1
MikaMika
Привет.
Есть основной шаблон base.html:
<HTML>
<HEAD>
<TITLE>Hello world!</TITLE>
{% block extra_head_js %}
{% endblock %}
</HEAD>
<BODY>
{% block extra_body_js %}
<script type="text/javascript">
        $(function(){
            alert('base.html DOM ready!');
        });
    </script>
{% endblock %}
</BODY>
</HTML>
И шаблон который наследует base.html,назовем его home.html:
{% extends 'base.html' %}
{% block extra_head_js %}
    <script type="text/javascript">
        $(function(){
            alert('home.html in HEAD!');
        });
    </script>
{% endblock %}
{% block extra_body_js %}
    <script type="text/javascript">
        $(function(){
            alert('home.html in BODY!');
        });
    </script>
{% endblock %}
Функция jQuery.ready(), она же $(function(){}) cрабатывает когда DOM страницы полностью сформирована.
Открываю сайт, рендерится шаблон base.html и появляется сообщение “base.html DOM ready!”.
Потом рендерится home.html, появляется сообщение “home.html in HEAD!”.
И вот тут вопрос!
Почему не появляется следующее сообщение “home.html in BODY!”?
Получается странно! Если вставить блок в <HEAD></HEAD>, то все работает, а если в конец, перед закрывающим <BODY>, то нет!
При этом в base.html блок:
{% block extra_body_js %}
<script type="text/javascript">
        $(function(){
            alert('base.html DOM ready!');
        });
    </script>
{% endblock %}
стоит перед закрывающим тегом <BODY> и он обрабатывается.
MikaMika
Проблема была в вызове несуществующей функции в одном из подключаемых в <BODY> javascript файлов.
Видимо вызов этой функции “портил” формирование структуры DOM.
Убрал вызов функции, все заработало.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB