javascript - 使用 Javascript 延迟最简单的 HTML 页面
问题描述
我正在托管这个超级简单的 HTML 页面,它基本上是一个屏幕,一次显示 8 个选项卡之一。基本上如下,但有 8 个选项卡而不是我在这里显示的 2 个:
<div id="global">
<nav>
<a href="#" id="nav1" class="navBtn" onclick="switchSlide(event, 1);">Slide 1</a>
<a href="#" id="nav2" class="navBtn" onclick="switchSlide(event, 2);">Slide 2</a>
</nav>
<div id="content">
<section id="slide1">
<img src="./ss01.jpg" />
</section>
<section id="slide2">
<img src="./ss02.jpg" />
</section>
</div>
</div>
当您单击选项卡时,这是执行转换的函数:
function switchSlide(e, slideNum) {
e.preventDefault();
for (x=0; x<document.getElementsByTagName("section").length; x++) {
document.getElementsByTagName("section")[x].className = "";
document.getElementsByClassName("navBtn")[x].className = "navBtn";
}
document.getElementById("slide"+slideNum).className = "active";
document.getElementById("nav"+slideNum).className = "navBtn active";
}
交叉淡入淡出过渡由 CSS 处理,过渡有持续时间但没有延迟。
section {
opacity:0;
transition:opacity 0.6s;
}
section.active {
opacity:1;
}
当我在计算机上测试页面时,单击选项卡后立即开始转换。但是当我在 iPad 或手机上进行测试时,当我触摸选项卡时,它会立即检测到活动/悬停/聚焦状态,但随后会有半秒的延迟,然后选项卡会改变颜色,并且内容开始转换。
我会认为这样一个简单的页面会像闪电一样快!我试过在我的设备上浏览亚马逊,他们的按钮反应比我的标签更快。所以我假设这不仅仅是由于设备的运行方式。此外,我尝试将我的页面限制为 2 个标签而不是 8 个,但它并没有更快。此外,我尝试将我的页面托管在 2 个不同的服务器上,但这也无济于事。我错过了什么?
谢谢你的帮助 !
解决方案
移动浏览器在点击后会有 300 毫秒的延迟。有一些解决方法,但对我有用的是在 head 中包含视口:
<meta name="viewport" content="width=device-width, user-scalable=no">
其他解决方案可以在这里找到: 消除移动 Safari 中点击事件的 300 毫秒延迟
推荐阅读
- excel - 在所有工作表中应用格式边框更改但一个不起作用?
- r - 过滤多个时间范围的多个特定列
- field - Acumatica 定制:将 PO Nbr 列添加到 SO 行
- c++ - 如何使用 C++ OpenGL Glut 显示两种形状而不是一种?
- windows - CreateToolhelp32Snapshot中使用的th32ProcessID是句柄吗
- javascript - Discord.js 在嵌入时按下反应时创建票证不起作用
- elixir - 如何在 Elixir 中声明全局常量?
- android - 是否可以将动画持续时间的一部分分配给要动画的特定值?
- python - 为什么 str(random.choice()) 返回 /string/
- html - 无法使用 bs4 提取表