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


  •  Глава 6 function popupPlayer() {     if (!localStorage.playerOpen) {         // сведено к "



Pdf көрінісі
бет224/232
Дата06.01.2022
өлшемі5,47 Mb.
#12231
1   ...   220   221   222   223   224   225   226   227   ...   232
200  •  Глава 6
function popupPlayer() {
    if (!localStorage.playerOpen) {
        // сведено к "true", но когда окно закроется,
        // мы удалим значение.
        localStorage.playerOpen = true;
        // открыть всплывающее окно
    }
}
function play(song) {
    localStorage.currentlyPlaying = song.title;
    // запускается и воспроизводит песню в каком-то квази-DRM
    ¬ потоковом режиме
}
function stop() {
    // когда песня заканчивается, или когда пользователь
    ¬ останавливает музыку вручную,
    // содержимое всплывающего проигрывателя также должно обновляться
    localStorage.removeItem('currentPlaying');
}
В то же время в коде всплывающего окна, помимо воспроизведения аудиопотока нужно 
также прослушивать событие хранилища, сообщающее, что значение 
currentPlaying
 по-
менялось. Тогда можно запускать новую веселую песню:
function handleStorage(event) {
    event = event || window.event; // для поддержки IE8
    if (event.newValue === null) { // событие удалено
        stopPlaying();
    } else {
        // начать воспроизведение и обновить информацию
        startPlaying(event.newValue);
    }
}
window.addEventListener('storage', handleStorage, false);
window.attachEvent('storage', handleStorage);
Очевидно, что существуют и другие ситуации применения данной функциональности, 
помимо сайта радио. Запомните только, что события хранилища позволяют отдельным 
окнам в одном домене обмениваться данными — в старые времена для реализации такой 
возможности вам пришлось бы немало потрудиться.


Достарыңызбен бөлісу:
1   ...   220   221   222   223   224   225   226   227   ...   232




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет