JavaScript:如何在if语句中精确匹配指定根URL?
修复jQuery脚本中URL判断逻辑,避免子页面误触发滚动操作
我来帮你搞定这个问题!你的代码里的if语句存在两个关键逻辑错误,导致即使在子页面(比如http://www.puslapioguru.eu/temu-portfolio/)也会触发滚动操作,而不是跳转到首页。
原代码的问题分析
- 赋值运算符代替比较运算符:你用了
link = "http://www.puslapioguru.eu",这是赋值操作而非比较。这个表达式会把字符串赋值给link,而整个表达式的结果就是这个非空字符串,在布尔判断里会被视为true。 - 逻辑或的写法错误:
link = "url1" || "url2"这种写法完全不符合比较逻辑,不管当前URL是什么,这个表达式的结果永远是第一个非空字符串,所以if条件永远成立。
修复后的代码方案
这里提供两种可靠的修复方式,你可以根据需求选择:
方案一:严格匹配根URL列表(精确控制允许的URL)
jQuery('.hestia-title').click(function() { const currentUrl = location.href; // 列出所有允许触发滚动的根URL(包含HTTP/HTTPS、带/不带www、带/不带末尾斜杠的情况) const allowedRootUrls = [ "http://www.puslapioguru.eu", "http://www.puslapioguru.eu/", "https://www.puslapioguru.eu", "https://www.puslapioguru.eu/", "http://puslapioguru.eu", "http://puslapioguru.eu/", "https://puslapioguru.eu", "https://puslapioguru.eu/" ]; if (allowedRootUrls.includes(currentUrl)) { const elementToScrollTo = jQuery('.second-title')[0]; console.log("Viskas veikia"); // 可选:添加smooth参数实现平滑滚动,提升体验 elementToScrollTo.scrollIntoView({ behavior: 'smooth' }); } else { // 跳转时优先使用HTTPS版本,更安全 window.location.href = "https://www.puslapioguru.eu/"; } });
方案二:判断是否为根路径(更灵活,无需列举所有URL)
如果只要是网站的根路径(不管域名是HTTP/HTTPS、带不带www)就触发滚动,否则跳转,可以用location.pathname判断:
jQuery('.hestia-title').click(function() { // 根路径的pathname是"/",子页面则是"/xxx/"这种格式 if (location.pathname === "/") { const elementToScrollTo = jQuery('.second-title')[0]; console.log("Viskas veikia"); elementToScrollTo.scrollIntoView({ behavior: 'smooth' }); } else { window.location.href = "https://www.puslapioguru.eu/"; } });
补充说明
- 建议使用
const/let代替var,更符合现代JavaScript规范,避免变量提升问题。 scrollIntoView的behavior: 'smooth'参数可以实现平滑滚动,不需要的话可以直接去掉该配置项。- 跳转时使用HTTPS版本的URL,更安全且符合现代网站的标准要求。
内容的提问来源于stack exchange,提问作者Kipras Bielinskas
相关产品推荐
相关产品推荐

