Метеор: обновление всей страницы только на мобильных устройствах при переходе на новый маршрут с железным маршрутизатором

Мое приложение метеора работает, как и ожидалось, на рабочем столе, но работает медленно на мобильных устройствах из-за ненужного полного обновления страницы при смене маршрута.

Я протестировал свое приложение на инструментах разработчика Google, используя опцию «эмулировать сенсорный экран», и на Galaxy S4 в мобильном хроме. Когда я нажимаю кнопки или ссылки, которые запускают iron-router для перенаправления на новый маршрут, обновляется вся страница вместо одного yield, содержащего шаблон (т.е. заголовок и нижний колонтитул перезагружаются вместе с тегами. Вся страница). То, что должно произойти и что происходит на рабочем столе, когда опция «эмулировать сенсорный экран» не активна и нажимаются кнопки и ссылки, является нормальным поведением с очень быстрым переключением шаблонов в {{ > yield }}. Остальная часть страницы не обновляется, как ожидалось. Я только знаю, что когда опция «эмулировать сенсорный экран» активна, сначала запускается событие запуска касания, за которым следует событие щелчка, вызывающее обновление всей страницы.

Любые идеи о том, что вызывает это и как это исправить?

Пример кода следующий:

//makes the button clicked make the page go back
'click .glyphicon-chevron-left' : function(e) {
e.preventDefault();
history.back();
};


// when clicked goes to a preference page
<a id='Preferences'  href="{{pathFor 'pref'}}" data-toggle="collapse"  data-target=".nav- collapse"> Preferences </a> 

Использование метеора версии 0.9.0.1 со следующими пакетами: небезопасные пакеты стандартных приложений, железный маршрутизатор, спин, железный маршрутизатор, прогресс, одностраничные учетные записи, учетные записи пользовательского интерфейса, пароль, анимация, css, метеор, natestrauser:connection-banner, mizzao:bootstrap- 3

Изменить: ошибка была вызвана сторонним файлом javascript, не связанным с пакетом. Буду обновлять дальше, если смогу определить конкретную причину проблемы.


person Zleman1593    schedule 30.08.2014    source источник
comment
Эй, что произойдет, если вы отключите iron-router-progress и установите шаблон загрузки?   -  person nathan-m    schedule 31.08.2014
comment
@NathanM Я только что удалил «железный маршрутизатор-прогресс». У меня уже был набор шаблонов загрузки, и теперь я на самом деле ненадолго вижу шаблон загрузки в настольном браузере перед загрузкой контента. Раньше я его вообще не видел. Однако это не решило проблему; Все равно перезагружает всю страницу. Теперь, после перезагрузки, даже до того, как загрузочный шаблон сможет запуститься, я быстро вижу окно входа в одностраничную флеш-память. Любые другие идеи? Спасибо.   -  person Zleman1593    schedule 31.08.2014
comment
Я также только что удалил «одностраничный вход», но все, что он делает, — это предотвращает вспышку окна входа в систему, которое вместо этого заменяется просто более продолжительным шаблоном вращения. Так что «одностраничный вход» не вызывает проблемы, и я добавлю это обратно. По какой-то причине события touchstart (которые я не использую в своем коде) вызывают перезагрузку всей страницы.   -  person Zleman1593    schedule 31.08.2014
comment
Хм... Я бы продолжал удалять элементы, пока это не сработает; так как некоторые беглые тесты показывают, что iron-router отлично работает с сенсорными событиями.   -  person nathan-m    schedule 31.08.2014
comment
Обновление: @NathanM Я удалил все пакеты, кроме следующих, и у меня все еще есть проблема: небезопасные стандартные-приложения-пакеты одностраничные учетные записи-учетные записи-пароль метеор mizzao:bootstrap-3 железо:маршрутизатор   -  person Zleman1593    schedule 31.08.2014
comment
В порядке. Я исправил проблему. Это было вызвано одним файлом javascript, который я добавил ранее. Я обновлю дальше, если смогу понять, почему это вызывало проблему. Спасибо за предложение @NathanM просто начать удалять вещи.   -  person Zleman1593    schedule 31.08.2014
comment
Отличная работа! Вы должны опубликовать ответ / принять его, чтобы люди не думали, что проблема не решена.   -  person nathan-m    schedule 01.09.2014


Ответы (2)


Я исправил это с помощью .

Template.back.events({
        'click #back': function (evt) {
            window.history.back();
            evt.preventDefault();
        },
        'touchstart #back': function () {
            window.history.back();
            evt.preventDefault();
        }
    });

и

Template.layout.events({
    'touchstart a': function (evt) {
        console.log(evt);
        evt.preventDefault();
        Router.go($(evt.currentTarget).attr('href'));
        return false
    }
});
person Adel    schedule 17.09.2014

У меня такая же проблема. Только что удален пакет axw:ratchet

person Adel    schedule 17.09.2014