注意:window 对象变量可以省略 window,直接使用变量,但是建议加上 window
1. window.location
- href、assign()、replace() 跳转页面
href 属性 和 assign()方法 用于跳转页面功能一样,只是写法不同,保留缓存历史,可回退
// href 是属性,赋值即调用
window.location.href = "http://www.baidu.com";
window.location.assign("http://www.baidu.com");
replace()方法 跳转页面,删除历史缓存,无法回退
window.location.replace("http://www.baidu.com");
- 刷新页面
重新加载当前页面
window.location.reload()
- 获取和设置当前页面 url 的相关信息
console.log(window.location.href); //完整url:协议名.域名:端口号/路径/?参数#hash
console.log(window.location.protocol); // 协议号
console.log(window.location.host); //域名和端口号
console.log(window.location.hostname); //域名
console.log(window.location.port); // 域名后的端口号
console.log(window.location.pathname); // 端口号后的路径
console.log(window.location.search); // 参数 格式:?id=1
console.log(window.location.hash); // # hash参数
2. window.history
需要有历史缓存,才可操作
window.history.forward(); // 浏览器前进
window.history.back(); // 浏览器后退
window.history.go(-1); // 浏览器后退
window.history.go(0); // 刷新页面
window.history.go(1); // 浏览器前进
window.history.go(num); // 跳转到指定的历史记录页
// 功能:切换到指定url,不重新加载页面
// state:状态对象可以是任何可以序列化的对象,JSON对象,(获取方式:window.history.state)
// name:标题名称,浏览器兼容性极差,建议传 ''
// url:新历史记录条目的URL,相对或者绝对路径,不传代表当前页面url(可直接传:?参数=参数值),注意:url必须同域,否则无效
history.pushState(state, name, url);
history.replaceState(state, name, url);
console.log(window.history.length); // 获取缓存历史的条数 最少时 1
// 使用 pushState 和 replaceState 时,调用此事件
window.addEventListener("popstate", function (e) {
const url = window.location.href;
console.log("url);
console.log(e.state); // 获取页面参数 state 对象
});
3. window 打开和关闭新窗口
// 保留当前页面,打开子窗口
// url:打开子窗口的路径
// name:打开子窗口的名称
// 宽高:设置打开子窗口的宽高,默认100%
// newWindow:返回子窗口的window,可对子窗口进行操作
const newWindow = window.open(url,name,宽高);
window.open("http://www.baidu.com",'新标题','width=200,height=100');
// 关闭当前页面
window.close();