2013-11-22 2 views
0

Я пытаюсь реализовать вид игрока на своем веб-сайте. Если нажата кнопка 'Play', начинается музыка, и страница плавно прокручивается вниз. Но когда вы нажимаете 'Mute' button (function(){music.volume=0}) Я не уверен, почему страница снова появляется наверху. window.scroll() ничего не делает без задержки. Поэтому я использую функцию setTimeout для прокрутки страницы в текущем месте. Проблема в том, что в Opera и IE setTimeout занимает около 10 ms, поэтому, когда я нажимаю кнопку 'Mute', я вижу, как тики вверх и назад. В хроме требуется только 2 ms, и проблем нет. Теперь, когда я решил создать свою собственную функцию тайм-аута, window.scroll() не работает снова.Только функция setTimeout выполняет функцию. JS

Вот мой код:

var isMuted = false; 
muteButton.onclick = function() { ////This function works with big delay. 
    if (!isMuted) { 
     mainAudio.volume = 0; 
     isMuted = true; 
    } else { 
     mainAudio.volume = bgAudioTrackVolume; 
     isMuted = false; 
    } 
    setTimeout(function() { 
     window.scroll(0, offset); /// Works 
    }, 0) 
}; 

Изменение SetTimeout с:

i = 9542155.873; /// I have tried delay time from 1ms - 250ms by changing this value. 
while (i > 0.00001) { 
    i = i/1.00; 
    if (i < 0.00001) { 
     window.scroll(0, offset); /// Does not do anything. Strange! Have tried to change variable with a number. 
    } 
} 

Каждый раз, когда я проверить значение смещения, он всегда доступен перед вызовом функции прокрутки. Я знаю, что моя проблема не обычна, и я действительно нуждаюсь в вашей помощи.

+0

Это потому, что ваш цикл while блокируется, а setTimeout не блокируется, поэтому что-то в вашем скрипте что-то меняет, а использование setTimeout задерживает выполнение до тех пор, пока эти изменения не будут выполнены, поскольку сценарий продолжает выполнение и просто приостанавливает тайм-аут функция для более позднего, в то время как цикл просто блокирует браузер, и нормальная цепочка выполнения все еще находится в игре. – adeneo

+0

Какова ценность 'offset' и как она рассчитывается? – jfriend00

+0

Позвольте мне угадать, кнопка отключения звука выглядит как '' и вы не отменяете событие? –

ответ

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