只有setTimeout执行函数.JS
Only setTimeout executes function. JS
我正在尝试在我的网站上实现这种播放器。如果按下'Play'
按钮,音乐将开始播放,页面将平滑向下滚动。但是当你按下'Mute'
按钮(function(){music.volume=0})
时,我不知道为什么页面再次出现在顶部。window.scroll()
不会毫不拖延地做任何事情。所以我使用setTimeout
功能来滚动当前位置的页面。问题是,在Opera和IE中,setTimeout
占用了10 ms
,所以当我单击'Mute'
按钮时,我看到顶部和后部都有类似的记号。在chrome中,它只需要2 ms
,并且没有任何问题。现在,当我决定创建自己的超时函数时,window.scroll()
将不再工作。
这是我的代码:
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.0001234567;
if (i < 0.00001) {
window.scroll(0, offset); /// Does not do anything. Strange! Have tried to change variable with a number.
}
}
每次我检查偏移值时,它总是在调用滚动功能之前可用。我知道我的问题不常见,我真的需要你的帮助。
页面滚动到顶部的原因是您使用了一个带有空书签#
的链接,该书签代表页面的顶部。scroll
方法在没有超时的情况下无法工作的原因是,跳到书签发生在事件处理程序之后。
不要试图将页面滚动回原来的位置,只需通过从事件处理程序返回false
来停止链接的默认操作:
var isMuted = false;
muteButton.onclick = function() {
if (!isMuted) {
mainAudio.volume = 0;
isMuted = true;
} else {
mainAudio.volume = bgAudioTrackVolume;
isMuted = false;
}
return false;
};
或者,使用链接以外的其他元素。
相关文章:
- 当js函数's已执行
- 调用php数组中的JS函数
- 为JS函数添加延迟
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用JS函数来使用另一个函数的语法?node.js
- 将JS函数传递给Emscripten生成的代码
- 是否可以在使用headerphp函数后自动调用JS函数
- 如何在.js函数中检索来自其他模板的表单的目标值
- 简单的JS函数.需要对变量进行澄清
- 无法识别从php创建的Js函数
- 如何将对象传递给这个js函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 将重定向URL链接添加到JS函数
- 从PHP调用JS函数不起作用
- js函数堆栈传入变量,.hide()不起作用
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如何让JS函数自行执行
- 使用默认js函数的javascript中的日期的第二天
- 如何从页面中的jquery调用angular js函数控制器
- 从.js文件调用html中的js函数