javascript - 只需尝试在 javascript 中每 1 秒向下滚动一次
问题描述
我尝试使用该setTimeout
功能 3 次,但由于某种原因它不起作用。我的印象是我必须使用clearTimeout
:
handle = setTimeout(function(){
window.scrollBy(0, 1000);
}, 1000);
window.clearTimeout(handle)
handle = setTimeout(function(){
window.scrollBy(0, 1000);
}, 1000);
window.clearTimeout(handle)
handle = setTimeout(function(){
window.scrollBy(0, 1000);
}, 1000);
window.clearTimeout(handle)
但这不起作用。我不确定为什么。在运行下一个之前,我每次都在学习超时句柄。我在这里做错了什么?
编辑
使用该setInterval()
函数导致我得到另一个错误。这是示例:
var myVar = setInterval(scrollDown(), 5000);
function scrollDown() {
window.scrollBy(0,1500);
}
以及来自控制台的错误:
拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本来源:“script-src 'report-sample' 'sha256-6gLjSWp3GRKZCUFvRX5aGHtECD1wVRgJOJp7r0ZQjV0='
所以我知道启用了内容安全策略,但是向下滚动与此有什么关系?不知道为什么会这样。
解决方案
无需清除超时,因为这将取消您挂起的函数调用。而是尝试使用 3 个不同的时间间隔(1000、2000、3000)调用 setTimeout 或使用 setInterval 并在第三次调用后取消
// setTimeout
setTimeout(function(){
window.scrollBy(0, 1000);
}, 1000);
setTimeout(function(){
window.scrollBy(0, 1000);
}, 2000);
setTimeout(function(){
window.scrollBy(0, 1000);
}, 3000);
// setInterval
var i = 0;
var handle = setInterval(function(){
window.scrollBy(0, 1000);
i++;
if (i === 3) {
clearInterval(handle);
}
}, 1000);
推荐阅读
- azure - 将更改发布到 Azure Synapse 工作区时,当前运行的管道是否中断?
- amazon-web-services - 如何授予对 IAM 角色/用户的访问权限以在 AWS Elasticsearch 中创建角色?
- python - Python 注释 - 为什么我的 IDE 的 Intellisense 无法识别已知类?
- python - 使用python提取Outlook邮箱中每个文件夹的名称
- python - 捕获交互式帮助文档字符串的输出(使用?)
- function - 为什么 kotlin 的 Any 类中的函数没有主体?
- javascript - 通过网页执行 CMD 命令
- python - 下划线开头的函数参数名称
- javascript - 如何检查变量值是增加还是减少并显示增加或减少的数字
- javascript - 编写多人国际象棋游戏:HTML5 Canvas + ReactJS vs. Phaser 3