Я настоятельно рекомендую против этого, но если вы действительно хотели, есть несколько вариантов:
- рама
- AJAX для всего сайта (на самом деле не так уж отличается от фрейма, но более приятный вариант)
- Синхронизация AJAX-плеера
- Параметр URL + переписать ссылки
- Popup
Frame / AJAX Site
Фрейм, вероятно, является «лучшим» случаем (для ваших зрителей он выглядит как один сайт). Полный сайт AJAX - в основном тот же принцип. Однако вы сказали, что вы против этих вариантов (но не почему).
AJAX-проигрыватель синхронизации
Синхронизация AJAX-плеера будет включать в себя сохранение файла cookie для идентификации пользователя, а проигрыватель AJAX вызывает внутренний сервер, в котором хранится текущее время воспроизведения песни для текущего пользователя.
Затем, при загрузке страницы, вы можете посмотреть на этот раз и запустить песню там.
Тем не менее, вы все равно получите небольшие пропуски между страницами (сравнимые с тем, когда вы проигрываете YouTube во встроенном фрейме, а затем в середине песни переходите к «настоящему YouTube», а не к встроенному видео, и это продолжается, за исключением они делают это с передачей параметров URL).
Параметр URL + переписать ссылки
Другим способом достижения опции «синхронизации» было бы иметь параметры URL, которые определяют текущий момент песни. Затем на каждом «тике» (скажем, секунде / полсекунде) вы можете использовать JavaScript, чтобы переписать все ссылки на странице, чтобы включить обновленный параметр URL. Однако это будет означать, что если кто-то откроет ваш сайт в новой вкладке / окне / без нажатия на ссылку на вашей странице, проигрыватель будет перезапущен. Так или иначе, это произойдет в большинстве из этих вариантов, хотя, возможно, это и не реальный недостаток.
Способ сделать это будет:
- Убедитесь, что загрузка вашего плеера проверяет параметр URL
GET
, чтобы определить время начала воспроизведения.
- Имеет функцию "галочки" jQuery / JS, которая выполняется каждые n миллисекунд (вам нужно будет проверить, чтобы найти идеал, я думаю, по крайней мере, 500/1000 мс).
- В функции "tick" все ссылки (теги
a
с href
) меняют бит ?paramname=0
, который вы добавили к ним, чтобы использовать новое время запуска.
Если вы можете установить куки из javascript (что я не думаю, что вы могли бы, но сейчас могут быть обходные пути), это может быть сделано еще проще, если ваш игрок проверяет куки при загрузке, а затем с помощью функции галочки обновлять куки, а не переписывать все URL.
Popup
Вы можете загрузить плеер во всплывающем окне (конечно, чтобы убедиться, что вы не запускаете новое всплывающее окно при каждой загрузке страницы). Это, вероятно, самый простой вариант для достижения того, чего вы хотите.
Моя рекомендация
Моя рекомендация - не воспроизводить музыку без разрешения - иметь проигрыватель (который может быть в кадре / в неизменном компоненте полного AJAX-сайта / во всплывающем окне), для воспроизведения которого требуется щелчок пользователя. В качестве альтернативы, убедитесь, что музыка достаточно хорошая, чтобы они все равно хотели, чтобы YouTube / их медиаплеер воспроизводили ее в фоновом режиме.