Остановите jQuery .html(), загружающий JavaScript

Я использую smoothState.js для предварительной загрузки страницы через ajax. Когда он обновляет страницу с помощью html, он снова загружает файл javascript.

Кажется, что страница запускает оба, вызывая ошибки. Могу ли я остановить загрузку скрипта jQuery?

    /** Run when requested content is ready to be injected into the page  */
    onEnd : {
        duration: 0,
        render: function (url, $container, $content) {
            $body.css('cursor', 'auto');
            $body.find('a').css('cursor', 'auto');
            $container.html($content);
        }
    },

Сценарий в HTML, который он загружает второй раз после загрузки AJAX

<script src="/js/main.min.js" async defer="defer"></script>

1 ответ

Решение

Если я правильно понимаю, попробуйте это:

var stop;


/** Run when requested content is ready to be injected into the page  */
onEnd : {
    duration: 0,
    render: function (url, $container, $content) {
        // the id #content must be after script tag in your page
        if(stop) $content = jQuery($content).find('#content').html(); 
        $body.css('cursor', 'auto');
        $body.find('a').css('cursor', 'auto');
        $container.html($content);
        // after first request enable stop variable
         stop = true;
    }
},

HTML:

<script src="/js/main.min.js" async defer="defer"></script>

<div id="content">.........</div>
Другие вопросы по тегам