关于JavaScript多方式重定向条件判断代码的技术咨询
代码逻辑解析与疑问解答
一、整体代码逻辑
这个redirectType函数是兼容性优先的页面重定向工具,会按优先级依次尝试四种跳转方案,哪个可用就执行哪个,同时在控制台打印使用的方法:
- 首先尝试
window.location.replace():如果该方法存在(是函数类型),就调用它跳转到this.href指向的地址。这种跳转不会在浏览器历史记录中留下当前页面的痕迹,用户点击后退会回到跳转前的上一页,而非当前页。 - 若
replace方法不可用,则检查window.location.href是否为字符串类型:如果是,直接将其赋值为目标地址,这是最常用的跳转方式,会在历史记录里新增当前页的记录,用户后退能回到当前页。 - 要是
href不符合条件,就尝试location.assign():该方法和直接给href赋值效果一致,同样会在历史记录中留痕。 - 最后兜底方案:前面三种都失效时,用
window.open()在当前窗口(_self参数指定)打开目标地址。
二、为什么要判断typeof window.location.href === "string"?
这是为了兼容极端老旧的浏览器或特殊运行环境。现代浏览器中window.location.href必然是字符串类型,但在非常早期的IE版本、某些嵌入式浏览器或受限环境里,href的实现可能不遵循标准,比如是对象或其他类型。只有确认它是字符串时,赋值操作才能正常触发页面跳转,避免报错。
三、window.location.href是不是函数?
不是。它是window.location对象的字符串类型属性:
- 读取它时,会返回当前页面的完整URL字符串;
- 给它赋值时,浏览器会自动加载新URL,实现页面跳转。
内容的提问来源于stack exchange,提问作者Mehul Kumar
相关产品推荐
相关产品推荐

