2015-05-09 6 views
0

Интересно, как работают сайты, такие как SoundCloud: вы играете песню, и она продолжает играть, даже если вы переходите на другую страницу без остановки Любые предложения?Как сохранить функцию js между разными страницами?

+0

Это можно сделать с использованием динамических данных и изменения URL-адреса. У вас есть конкретная проблема? – NewToJS

ответ

3

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

На практике это означает, что загружен только один документ HTML. Когда, скажем, нажата ссылка, действие браузера перехвачено и предотвращено, а поведение браузера подделано javascript.

Рассмотрите сайт, состоящий из страниц A и B. Обычно, когда ссылка, указывающая на B, активируется, URL-адрес изменяется, и браузер вызывает сервер, запрашивая B. В одностраничном приложении, однако, это прерванная функцией javascript, которая изменяет URL-адрес с помощью API истории, а затем отображает B способом, который не требует, чтобы новый документ был синхронно извлечен с сервера.

0

Технически вы никогда не меняете страницу, когда используете souncloud. Вы всегда остаетесь на одной странице, и только части меняются, которые меняются, поэтому вы никогда не перезагружаете всю страницу. Вот почему они могут держать музыку в игре: они просто не удаляют или не меняют реального игрока. Если вам интересно, почему URL-адрес в вашем браузере меняется, если вы никогда не покидаете страницу: они манипулируют вашим history entries. Если вы заинтересованы в создании приложения, которое ведет себя аналогично, вы должны проверить рамки, например Ember.js или Angular.js. TodoMVC Дает хороший обзор этих фреймворков.

1

Существует несколько способов сделать это.

Перейдите на новую страницу

Если вы сделаете это, совершенно новый контекст выполнения JS создается для новой страницы, так что вы не можете сохранить функцию работает. Однако вы можете «возобновить» выполнение на новой странице. Для этого вам нужно сохранить состояние старой страницы на сервере или в каком-либо клиентском хранилище, которое сохраняется между изменениями страницы (файлы cookie, localStorage и т. Д.).

Поддельный навигация

Это наиболее удобный способ - вы превратить ваш сайт в веб-приложение. У вас больше нет нескольких страниц, поэтому, когда пользователь хочет изменить то, что он видит в браузере (например, перейти к новой песне), приложение просто изменяет соответствующую область с нужным контентом. Это сложная тема, которая, вероятно, должна быть исследована сама по себе, а не объясняется в ответ SO. Идем дальше и «одностраничное приложение Google», и для этого вам нужно найти множество ресурсов.

Смежные вопросы