• Почему погружаемый JavaScript на локальной машине работает, а при загрузке на сервер не хочет?

    Вот тут видно, что XHR sortable-table.js загрузился до события load (красная линия), а значит в момент события он выполняется. При этом сам динамический контент (таблица, синий блок profiles_rank/) еще только загружается, а значит его пока нет в DOM.
    70556ab2962046829cb932305890a6ae.png

    Иногда работает, когда контент появляется раньше, чем срабатывает инициализация библиотеки сортировки. Подгружать скрипт сортировки асинхронно не нужно, он уже в себе ждет когда страница и все ресурсы загрузятся полностью. Но если он начнет выполняться (инициализация LightTableSorter.init()), пока в DOM еще не погрузилась таблица (точнее заголовки), то вот тут будет пусто, и никакие клики не забиндятся
    var ths = document.getElementsByTagName('th');
    Arr.forEach.call(ths, function (th) {th.onclick = onClickEvent;});

    Вам надо провести "ручную" инициализацию после подгрузки таблицы. К сожалению, эта библиотека написана так, что вы не сможете вызывать код в Immediately-Invoked Function Expression (function (document) {})(document); без модификации библиотеки

    Удалите этот код:
    document.addEventListener('readystatechange', function(){
    if (document.readyState === 'complete') LightTableSorter.init();
    }, false);
    а вместо него добавьте этот:
    window.LightTableSorter = LightTableSorter;

    Теперь вы можете после загрузки данных через load выполнить инициализацию. В момент вызова callback function таблица уже должна быть вставлена. Только оберните в jquery.ready
    $(function() {
        $('#to_load').load('/stat/rating/profiles_rank/ #for_including1', function () {
            window.LightTableSorter.init();
        });
    });
    Ответ написан
    2 комментария
  • Как перестать читать Хабр?

    Я думаю купить Xbox 360 и The Elder Scrolls IV: Oblivion
    Ответ написан
    Комментировать