2013-11-22 3 views
0

내 웹 사이트에 플레이어 종류를 구현하려고합니다. 'Play' 버튼을 누르면 음악이 시작되고 페이지가 부드럽게 아래로 스크롤됩니다. 그러나 버튼 (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

함수는 브라우저를 단순히 차단하고 실행의 정상적인 체인은 여전히 ​​작동합니다. – adeneo

+0

'offset'의 값은 무엇이고 어떻게 계산됩니까? 내가 맞춰 보자 – jfriend00

답변

관련 문제