页面点击国家选择按钮后持续刷新问题排查求助
解决落地页选择国家后页面持续刷新的问题
看起来你遇到的无限刷新问题,主要是两个核心原因导致的:URL拼接错误和跳转逻辑在目标页面重复执行,咱们一步步来解决:
问题根源分析
- URL拼接错误:你的
url变量已经是以/结尾的(http://expatri8.com/),但拼接跳转地址时又额外加了一个/,生成的URL会是http://expatri8.com//UK这种双斜杠格式。浏览器解析后实际会变成http://expatri8.com/UK,但代码判断时会认为当前URL不等于拼接后的URL,于是再次触发跳转,形成循环。 - 跳转逻辑全局执行:如果你的目标页面(比如UK/AUS页面)也引入了这段脚本,那么每次加载目标页面时,脚本都会检查Cookie并尝试跳转,这也会导致无限刷新。
修复后的代码
jQuery(document).ready(function () { var baseUrl = 'http://expatri8.com/'; var UK_page = 'UK'; var AUS_page = 'AUS'; var NZ_page = 'NZ'; var ZA_page = 'ZA'; // 仅在落地页执行自动跳转逻辑(判断当前路径是否为根路径) if (window.location.pathname === '/') { var defaultPage = Cookies.get('default_page'); if (defaultPage != null) { var targetUrl = baseUrl + defaultPage; if (window.location.href !== targetUrl) { window.location.href = targetUrl; } } } // 统一按钮点击逻辑:设置Cookie + 跳转 jQuery('#set_UK_butt').click(function (e) { // 阻止默认行为(如果按钮是a标签的话) e.preventDefault(); Cookies.set('default_page', UK_page, {expires: 999, path: '/'}); window.location.href = baseUrl + UK_page; }); jQuery('#set_AUS_butt').click(function (e) { e.preventDefault(); Cookies.set('default_page', AUS_page, {expires: 999, path: '/'}); window.location.href = baseUrl + AUS_page; }); jQuery('#set_NZ_butt').click(function (e) { e.preventDefault(); Cookies.set('default_page', NZ_page, {expires: 999, path: '/'}); window.location.href = baseUrl + NZ_page; }); jQuery('#set_ZA_butt').click(function (e) { e.preventDefault(); Cookies.set('default_page', ZA_page, {expires: 999, path: '/'}); window.location.href = baseUrl + ZA_page; }); });
关键修复点
- 修正URL拼接:去掉多余的斜杠,直接用
baseUrl + defaultPage生成正确的目标URL,避免双斜杠导致的判断错误。 - 限制跳转逻辑范围:通过
window.location.pathname === '/'判断当前是否是落地页,只有在落地页才执行自动跳转逻辑,避免目标页面重复触发跳转。 - 统一按钮逻辑:给每个按钮添加
e.preventDefault()(如果按钮是<a>标签的话,防止默认跳转干扰),并且补全了AUS/NZ/ZA按钮的跳转代码(之前只设置了Cookie没跳转,会导致用户停留在落地页)。 - 优化Cookie作用域:给Cookie添加
path: '/'参数,确保在整个域名下都能访问到这个Cookie,避免不同路径下Cookie无法读取的问题。 - 替换废弃方法:把
jQuery(window).load()换成jQuery(document).ready(),前者已经被jQuery废弃,后者在DOM加载完成后就执行,体验更流畅。
额外测试建议
- 测试前先清除浏览器对应域名的Cookie,避免旧的错误Cookie影响测试结果。
- 可以在目标页面检查是否引入了这段脚本,如果有,建议移除或者确保跳转逻辑不会在目标页面触发。
内容的提问来源于stack exchange,提问作者Keith Davis
相关产品推荐
相关产品推荐

