На моем мобильном сайте у меня есть пара страниц, с вкладкой navbar внизу, позволяя пользователям перемещаться между ними. На одной из страниц у меня есть холст, на котором пользователи могут рисовать. Проблема в том, что каждый раз, когда я перехожу на одну страницу, а затем обратно на страницу холста, я вижу старый рисунок на секунду, но потом он очищается.
Я думаю, что это вызвано из-за повторной инициализации страницы каждый раз, когда я ввожу ее, так как это можно предотвратить?
Я уже пробовал кэшировать страницы, но почему-то не помог... Какие-нибудь другие идеи?
Вы должны очистить холст от jQuery mobile pagebeforeshow.
Первая страница, к которой пользователь переходит, всегда будет находиться в DOM, поэтому, если эта страница содержит холст, а пользователь переходит на другую страницу и обратно, вам придется сбросить элемент холста вручную.
Этот вопрос показывает, как сбросить холст - как очистить холст для перерисовки.
Поэтому ваш код должен выглядеть примерно так:
$(document).on("pagebeforeshow", "div.id_or_class_of_page(s)_with_canvas", function () {
ctx = _your_canvavs_element;
ctx.save();
// Use the identity matrix while clearing the canvas
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Restore the transform
ctx.restore();
});
Не уверен относительно кода холста.