这个不用多讲,前面已经接触过,所有在全局作用域定义的变量都会被当做 window 对象的属性,同时 Global 对象也是基于 window 对象的。
需要注意的是,一般定义变量时,这个变量的四个数据属性都默认为 true(这个前面面向对象那里讲过),所以都是可以删除或者修改的。**可是不一样的地方就在全局作用域,在此作用域下定义的变量的数据属性之一 [[Configurable]]**默认为 false,这就导致无法删除,强行使用 delete 是无效的,在 IE9 之前的浏览器中还会报错
总结来说,全局作用域定义的变量无法删除,但是在 window对象及其名下的所有对象中定义的变量是可以删除的。
这里主要是值网页中打开网页用到的框架 frame
<html>
<frameset>
<frame name="1">
<frame name="2">
</frameset>
</html>
不过建议使用 top 对象,因为 top 对象始终指向最外层框架也就是浏览器窗口,这样可以保证访问到正确的 frame
直接指向本层框架的上层框架
指的是浏览器相对于屏幕的位置
分别代表浏览器窗口相对于屏幕左边的距离和上边的距离
分别代表浏览器窗口相对于屏幕左边的距离和上边的距离
总结,并不是每个浏览器都支持上述方法,另外一点,对于距顶部的距离,有两类情况,一类浏览器认为应该从整个浏览器窗口最外面算起,另一类则认为应该从浏览器中可见页面的边框算起。所以在使用时最好先判断浏览器是否支持在决定取哪一个值(Left和Top或者X和Y)
都接受两个参数
包括四个基本属性
console.log(window.innerWidth,window.innerHeight);//1054 722
console.log(window.outerWidth,window.outerHeight);//1536 824
在标准模式下有效,所以浏览器都支持
混杂模式下必须使用 body 来获取,部分移动浏览器也只能用这种方式获取
浏览器实现标准不一,模式也不一定统一,还要考虑移动浏览器兼容,所以建议使用前做判断是否存在这个值,没有就换个属性,反正主要就上面两种方式
也可以通过 compatMode 来判断属于那种模式,然后在决定使用哪个属性
if(document.compatMode == 'CSS1Compat') {
console.log('标准模式');
console.log(document.documentElement.clientWidth,document.documentElement.clientHeight);
}
else {
console.log('混杂模式');
console.log(document.body.clientWidth,document.body.clientHeight);
}
//标准模式
//1054 722
都接受两个参数
var w = window.open("https://www.baidu.com/","Baidu","height=600,width=300");
w.resizeTo(300,600);
w.resizeBy(50,50);
w.moveTo(400,300);
w.moveBy(20,20);
//将会在屏幕中间位置打开一个长方形大小的窗口
window对象中最为常见的方法,在JS代码里面打开网页的最常见的方法。三个参数;
注意,
var w = window.open("https://www.baidu.com/","Baidu","width=300,height=200");
仅仅限于用 window.open() 打开的新网页,浏览器的主窗口是无法用代码关闭的,必须由人自己关闭
var w = window.open("https://www.baidu.com/","Baidu","width=300,height=200");
w.close();
//关闭新打开的网页
该属性是用来确定是否用单独线程运行新网页,设置后即表示打开的网页用新进程运行,无需与其他页面(window对象)互相通信,一旦设置就无法恢复了
var w = window.open("https://www.baidu.com/","Baidu","width=300,height=200");
w.opener = null;
//关闭新打开的网页
由于打开新网页是如此简单,所以不免有人设置程序,短时间内自动打开许多广告页面,所以许多浏览器都做了限制
当然也可以为自己的浏览器安装弹窗屏蔽插件
两个参数,参数1位执行代码,使用函数比较好;参数2位延迟时间;
var t = setTimeout(function() {
document.write('<h2>Hello World!</h2>');
},2000)
if(t) {
setTimeout(function() {
clearTimeout(t);
console.log("提前清除");//1s 后输出
},1000);
}
//关闭新打开的网页
参数与超时调用一样,只不过他是每过一段时间就执行一次,直至清除或者页面关闭
三大方法 alert() confirm() prompt()
跳出弹框显示信息,一般只有确定按钮,用户只能查看信息不能做其他请求
alert("Hello");
跳出弹框信息,并且有确定和关闭两个按钮,点击之后分别会返回 true 和 false
if(confirm("你确定要删除吗?")) {
alert("删除成功");
}
else {
alert("取消删除")
}
除了 OK 和 Cancel 按钮之外,可以提供文本域。点击关闭会返回 null,点击OK则会返回文本域内容;
该方法接受两个参数,参数1为提示文本,参数二为文本域默认值。
var re = prompt("请输入邮箱","Email")
if(re !== null) {
alert("您的邮箱为:" + re);
}
else {
alert("您取消了输入");
}
window 对象还可以控制滚动条的滚动,可以用来做回到顶部效果
指定滚动多少像素
window.scrollBy(0, 300);//向下滚动300像素
指定滚动到什么坐标
window.scrollBy(0, 500);//滚动到坐标(0,300)的位置
主要用来保存 URL 中的各项参数信息,比如地址,协议,端口,查询字符串等等;当然该对象也可以直接修改这些参数
它既是 window 对象的一部分,也是 document 对象的一部分
以博主个人博客页面为例
//http://www.tzwlink.xyz/detialsart?artId=13002
console.log("协议:",location.protocol);//http:
console.log("服务器地址:",location.hostname);//www.tzwlink.xyz
console.log("端口:",location.port);//
console.log("文件路径:",location.pathname);///detialsart
console.log("查询参数:",location.search);//?artId=13002
console.log("hash参数",location.hash);//
当然对于查询参数较多的情况可以自己编写函数来分解,因为上述的 search 属性是返回拼接后的所有字符串
下面例子获取百度热搜榜第一的各项查询参数
var query = location.search ? location.search.replace("?","").split("&") : null;
var list = [];
console.log("参数名\t参数内容");
query.forEach((item)=> {
list = item.split("=");
console.log(decodeURIComponent(list[0]) + "\t\t" + decodeURIComponent(list[1]));
});
// 参数名 参数内容
// cl 3
// tn baidutop10
// fr top1000
// wd 黄河出现2020年第2号洪水
// rsv_idx 2
// rsv_dl fyb_n_homepage
// hisfilter 1
上述第一个方法传入新的 url 作为参数,其余两个则是赋值;最终效果一样
location.assign("http://www.tzwlink.xyz/");
location.href = "http://www.tzwlink.xyz/";
window.location = "http://www.tzwlink.xyz/";
凡是修改除 hash 以外的参数都可以重新加载到修改后的页面,每修改一次就会刷新
//原始地址为 http://www.tzwlink.xyz/
location.pathname = "detialsart";
//跳转至 http://www.tzwlink.xyz/detialsart
location.search = "?artId=13001";
//跳转至 http://www.tzwlink.xyz/detialsart?artId=13001
这个与 String 里面的那个不同,这个是 location 所具有的。
浏览器每一次跳转,历史记录都会记录,这样点击返回就能回到之前的页面。但是该方法可以不再历史记录中记录,也就导致不能返回至上一个页面。
location.replace("http://www.tzwlink.xyz/");
重新加载页面
暂时跳过
用处不大,暂时跳过
记录着用户上网的记录,但是具体访问过哪些网址,对于开发人员也是屏蔽的,但可以通过一些方法来操作
负数为后退几页,正数为前进几页
history.go(-2);//后退两页
history.go(1);//前进一页
也可以是传入 URL,它会根据最近访问这个 URL 的时间来跳转,如果没有该方法不执行
前几一页,后退一页
该属性如果长度为0则代表是直接打开这个页面的
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有