返回上一页时光标卡在‘wait’状态的解决方法咨询
解决返回上一页时光标无法恢复为
default的问题 问题根源
浏览器的**后退缓存(Back-Forward Cache,简称bfcache)**会保留页面的状态(包括DOM样式、JS运行状态),当用户通过后退回到登录页时,页面不会重新触发window.onload事件,你原本依赖onload重置光标的逻辑就不会执行,导致光标停留在wait状态。
修复方案
使用pageshow事件替代window.onload,这个事件会在页面首次加载、从bfcache恢复显示时均触发,能可靠重置光标样式。同时修正你现有JS代码中的错误。
修正后的JS代码
function waitPointer() { document.body.style.cursor = 'wait'; return true; } // 页面显示时(含从缓存恢复)强制重置光标为默认样式 window.addEventListener('pageshow', function() { document.body.style.cursor = 'default'; });
额外兜底优化
如果表单提交过程中出现异常(比如请求超时、验证失败),可以给表单添加兜底逻辑,避免光标一直处于wait状态:
<!-- 给登录按钮所在的表单添加onsubmit事件 --> <form onsubmit="setTimeout(() => document.body.style.cursor='default', 3000);"> <div class="introLogin" onclick="waitPointer();"> <input class="introLoginInput" type="submit" name="submit" value="Login"> </div> </form>
设置3秒后自动重置光标,防止因提交流程卡住导致光标状态异常。
原代码问题说明
你写的defaultPointer函数存在错误:第一行错误将光标设置为wait,且window.onload的绑定逻辑冗余,建议直接移除这个函数,改用上面的pageshow事件监听方案。
内容的提问来源于stack exchange,提问作者HawkHightech
相关产品推荐
相关产品推荐

