window.location.href
和 window.open
都是用来实现页面跳转的,但它们之间存在一些区别:
window.location.href
:
window.location.href = "/csdn/" + tab + "/index.html";
它会改变当前窗口的URL和加载新页面,相当于在当前标签页/窗口中进行页面重定向。
当你设置 window.location.href
的值时,浏览器会立即停止当前页面的所有活动并开始加载新地址指向的页面。
window.open
:
- 它会在一个新的浏览器窗口或标签页中打开指定的URL,不会影响当前窗口的内容。
- 如果没有指定窗口参数或者目标名称(例如
_blank
),则默认在新窗口中打开链接。
window.open("/csdn/" + tab + "/index.html", "_blank");
当然,如果你想在当前窗口或标签页中打开链接,并覆盖当前页面内容,你也可以这样使用 window.open,一般不推荐
:
window.open("/csdn/" + tab + "/index.html", "_self");
这里的 "_self" 表示在当前窗口或标签页中打开链接。不过,请注意,由于现代浏览器的安全策略,特别是对于弹窗窗口的限制,直接使用 window.open 可能会被浏览器阻止或放入通知中心,尤其是当它是由非用户直接操作触发的时候(比如响应鼠标点击以外的事件)。
- window.open() 函数通常用来打开一个新的浏览器窗口或标签页,但当第二个参数设为 _self 时,它的行为与直接修改 window.location.href 类似。
- 在这种情况下,"_self" 表示在当前窗口或标签页中打开指定的 URL,因此它也会导致当前页面被替换为指定的新页面。
- 虽然两者效果相同,但 window.open() 方法通常还允许您指定其他的窗口目标,例如 _blank 用于新建标签页,或者 _parent、_top 等用于框架内的导航。
总结来说,如果你想在当前窗口中跳转页面,使用 window.location.href
;如果你想在一个新的窗口或标签页中打开链接,使用 window.open
。