网页刷新随机跳转指定页面数组链接,如何避免出现无限循环?
问题原因
- 现有代码在所有部署了脚本的页面加载完成后都会无条件触发跳转,跳转的目标页面如果也部署了相同脚本,会再次触发跳转逻辑,形成无限循环。
- 随机选择链接的逻辑没有排除当前页面,可能随机到当前页面地址,导致页面反复自我刷新,也会触发循环。
修复方案
调整逻辑,仅当用户主动刷新当前页面时才触发跳转,同时随机选择链接时排除当前页面,避免重复跳转。以下是修复后的完整代码:
<head> <script type="text/javascript"> // 跳转目标链接数组 var links = new Array(); links[0] = "page1.html"; links[1] = "page2.html"; // links[2] = "其他页面.html"; function openLink() { // 获取当前页面的文件名 const currentPage = location.pathname.split('/').pop(); // 仅当操作类型为刷新时才执行跳转,performance.navigation.type=1代表刷新 if (performance.navigation.type !== 1) return; // 过滤掉当前页面,得到可选的跳转目标列表 const validLinks = links.filter(link => link !== currentPage); if (validLinks.length === 0) return; // 随机选择跳转目标 const i = Math.floor(Math.random() * validLinks.length); parent.location = validLinks[i]; return false; } </script> </head> <body onload="openLink();">
注意事项
如果你的links数组中包含完整域名的链接,需要将当前页面的判断逻辑从匹配文件名调整为匹配完整的location.href即可。
内容的提问来源于stack exchange,提问作者Silver Saarberg
相关产品推荐
相关产品推荐

