JavaScript9 BOM对象

1 什么是BOM

1.浏览器对象模型(Browser Object Model (BOM))尚无正式标准。
由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。
所有浏览器都支持 window 对象。它表示浏览器窗口。
2.所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。winddow对象也可认为是全局作用域。
(1)全局变量是 window 对象的属性。
(2)全局函数是 window 对象的方法。
(3)甚至 HTML DOM 的 document 也是 window 对象的属性之一:window.document.getElementById(“header”);与此相同:document.getElementById(“header”);

2 浏览器的一些常用的属性

2.1 屏幕的宽度和高度

1.window对象
(来自https://blog.csdn.net/qq_15626693/article/details/54618276?utm_source=copy 的一张图),可以说非常形象了
body.clientHeight,body.offsetHeight最好还是用dom获得。有些浏览器对于这个属性不兼容。

        console.log("屏幕总宽度"+window.screen.width+",屏幕总高度"+window.screen.height);//屏幕总的宽和高
        console.log("屏幕可用宽度"+window.screen.availWidth+",屏幕可用高度"+window.screen.availHeight);//屏幕可用的宽和高,出去任务栏

        console.log("浏览器总宽度"+window.outerWidth+",浏览器总高度"+window.outerHeight);//浏览器的总的宽和高
        console.log("浏览器可用宽度"+window.innerWidth+",浏览器实际高度"+window.innerHeight);//浏览器的页面的宽和高,包括滑动条

在这里插入图片描述
2.document对象,获得dom文档的窗口信息
location.hostname 返回 web 主机的域名
location.pathname 返回当前页面的路径和文件名
location.port 返回 web 主机的端口 (80 或 443)
location.protocol 返回所使用的 web 协议(http:// 或 https://)
location.pathname 属性返回 URL 的路径名。
location.assign() 方法加载新的文档。

        //与dom有关的
        console.log("浏览器实际可用度"+document.documentElement.clientWidth+",浏览器可用高度"+document.documentElement.clientHeight);//浏览器的页面的宽和高,不包括滑动条
        // var w = document.documentElement.clientWidth || document.body.clientWidth;
        // var h = document.documentElement.clientHeight || document.body.clientHeight;
        // 通常用两种方法做冗余,一般浏览器应该支持的是第一种方法
        console.log("dom全文宽度"+document.documentElement.scrollWidth+",dom全文高度"+document.documentElement.scrollHeight);
        console.log("被卷入的宽度"+document.documentElement.scrollLeft+",被卷入的高度"+document.documentElement.scrollTop);

在这里插入图片描述

2.2 location对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        console.log("web域名"+location.hostname);
        console.log("当前页面的"+location.pathname);
        console.log("web端口"+location.port);
        console.log("web协议"+location.protocol);

        console.log("整个url"+location.href)
    </script>
</head>
<body>
<form>
    <input type="button" onclick="fun()" value="切换页面">
</form>
<script>
    var fun=function () {
        location.assign("https://www.baidu.com");//把整个html文档变换了了
    }
</script>
</body>
</html>

2.3 弹窗

1.警告弹窗alert在这里插入图片描述
2.选择弹窗confirm在这里插入图片描述
3.输入弹窗prompt在这里插入图片描述

        //1.没有返回值
        alert("alert弹窗");
        console.log();
        //2,点击确定返回true否则返回false
        var result=confirm("confirm确认弹窗");
        console.log(result);
        //3.输入弹窗,如果点击确定返回的是输入值,否则返回none
        var result=prompt("输入","初始默认值");
        console.log(result);

2.4 Navigator对象浏览器属性

<script>
txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";
txt+= "<p>浏览器名称: " + navigator.appName + "</p>";
txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";
txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";
txt+= "<p>硬件平台: " + navigator.platform + "</p>";
txt+= "<p>用户代理: " + navigator.userAgent + "</p>";
txt+= "<p>用户代理语言: " + navigator.systemLanguage + "</p>";
document.getElementById("example").innerHTML=txt;
</script>

2.5 历史纪录

如果在一个选项卡里切换url来切换网页,可以通过浏览器的左右按钮实现,其实也可以通过代码实现在这里插入图片描述
1.window.history.back(数字),返回前面的第几个页面
2.window.history.forward(数字),返回后面的第几个页面

<form>
    <input type="button" value="前面的一个网页" onclick="window.history.back()">
    <input type="button" value="后面的一个网页" onclick="window.history.forward()"><br/>
</form>

2.6 时间间隔

注意传入的函数只能是函数名,参数要在后面的几个参数里指定。
1.重复调用一个函数,每隔固定的ms数调用一次
(1)setInterval函数设置开始重复调用,并且返回一个计时器对象,这个对象每隔固定的秒数就会调用函数。
计时器对象=setInterval(函数名,毫秒数[,demo1,demo2…])
(2)clearInterval函数停止调用函数。
clearInterval(计时器对象)
2.延时调用一个函数,固定的ms数之后,调用一次。
(1)setTimeout函数设置开始重复调用,并且返回一个计时器对象,计时结束时调用这个函数
计时器对象=setTimeout(函数名,毫秒数[,demo1,demo2…])
(2)clearTimeout函数停止调用函数。
clearTimeout(计时器)

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
    var fun1=function (str) {
        var content=document.getElementById("output");
        content.innerHTML+=" "+str
    };
    var timeCounter;//一个计时器对象
    var fun11=function () {
        timeCounter=setInterval(fun1,3000,"hello");//以后每隔这么多毫秒的时间调用一次这个函数
    };
    var fun12=function () {
        clearInterval(timeCounter);//停止重复调用
    };

    var fun2=function (str) {
        alert(str)
    };
    var timeStop;
    var fun21=function () {
        timeStop=setTimeout(fun2,3000,"world");
    }
    var fun22=function () {
        clearTimeout(timeStop);//停止重复调用
    }
    </script>
    <style>
        *{
            font-size: 20px;
        }
    </style>
</head>
<body>
<form>
    <input type="button" value="点击我后每隔三秒输出一句话" onclick="fun11()">
    <input type="button" value="点击我后停止每隔三秒输出一句hello" onclick="fun12()"><br/>
    <input type="button" value="点击我后三秒后输出一句world" onclick="fun21()">
    <input type="button" value="点击我后停止三秒后输出的world" onclick="fun22()">
</form>
<p id="output"></p>
</body>

3.7 新窗口open与close

open函数,返回一个对象,这个对象类似于window对象,是当前窗口的子对象。详细参数设置在这里。
close函数,关闭指定的窗口对象。
https://www.runoob.com/jsref/met-win-open.html
1.最简单的方式在新窗口打开指定页面,并且获得焦点

  <script>
        function open1() {
            var newWindow=window.open("https://www.baidu.com","baidu页面");
        }
    </script>
    <style>
        *{
            font-size: 30px;
        }
    </style>
</head>
<body>
<form>
    <input type="button" value="打开百度" onclick="open1()">

2.可以指定页面的打开方式,
_blank - URL加载到一个新的窗口。这是默认
_parent - URL加载到父框架
_self - URL替换当前页面
_top - URL替换任何可加载的框架集
可以查看我以前的博客看详细的差别

扫描二维码关注公众号,回复: 6244316 查看本文章

3. Cookie

3.1 什么是Cookie

1.介绍
在Java,Python,C++等后端语言里,都有文件操作语句。代码通过在后端的服务器执行,读取和修改文件的内容,从而达到web服务后端的功能。
而我们所学的这个JavaScript是前端语言,通过浏览器解释执行,因此不会对文件直接执行操作。如果要使一段程序在不同的时间可以访问相同的数据,就需要一种用来存储数据的东西,这种东西就叫做cookie。
可以简单的认为,Cookie操作就是其他编程语言里的文件读写操作。例如我先在写博客的页面上用F12-Application-Cookies就可以查看当前页面的Cookie了。在这里插入图片描述
2.格式:
(1)cookie说白了就是一个全局变量,这个变量是一种特殊格式的字符串。但不能进行普通的字符串操作。
https://blog.csdn.net/qq_35574888/article/details/80959449
详细介绍了Cookie的组成,我们这里先只关心键值对和过期时间。
(2)Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
(3)键值对是必要的项,
过期时间expires不是必要项,如果没有设置这个过期时间,默认是一个1970年以前的时间,则这个键值对永远不会过期。如果我们设置的时间到期了,这个键值对自动消失。

3.2 Cookie的创建,读取和删除

html部分我们设置几个按钮,通过调用函数创建和查看cookie

<body>
<form>
    <input id="name" type="text" value="Bob"><!--默认的name-->
    <input type="button" value="添加name" onclick="createName()">
    <input id="age" type="text" value="11"><!--默认的name-->
    <input type="button" value="添加age" onclick="createAge()">
    <input type="button" value="删除name" onclick="removeName()">
    <input type="button" value="删除age" onclick="removeAge()">
    <input type="button" value="查看cookie" onclick="show()">
</form>
</body>

3.2.1 直接创建

document.cookie=键名+"="+值名+";"+过期UTC时间

//添加cookie时的等号不是简单的赋值,而是添加了一个cookie键值对。
        function createName() {
            // 创建键值对并且指定时间
            var name=document.getElementById("name");
            var d=new Date();//当前的时间戳
            d.setTime(d.getTime()+(1*60*1000));//,一分钟后过期
            var expires="expires="+d.toUTCString();//UTC/GMT时间
            document.cookie="name"+"="+name.value+";"+expires;//添加cookie
        }
        function createAge() {
            // 创建键值对并且指定时间
            var name=document.getElementById("age");
            var d=new Date();//当前的时间戳
            d.setTime(d.getTime()+(1*60*1000));//,一分钟后过期,过期的时间戳i
            var expires="expires="+d.toUTCString();//UTC/GMT时间
            document.cookie="age"+"="+name.value+";"+expires;//添加cookie
        }

3.2.2 直接读取

可以F12-Application-cookies里查看键值对
我们在这里输出所有的cookie

 function show() {
            alert(document.cookie);
        }

3.2.3 直接删除

删除是一个麻烦事,cookie不是普通的字符串,不能直接删除某一个子串。但是过期时间对我们有所帮助,把过期时间设置为过去,不就行了,键值对过期了自动删除。
其实删除键值对的时候,只要键的名字符合期望,值可以随便写,因为已经过期了,反正也没用了,相当于重新给这个键重复设置了值,但是这个新的键值对过期了,也没有用。

//cookie不是简单的字符串,通过设置过期时间来删除
        function removeName() {
            var name=document.getElementById("name");
            var d=new Date();//当前的时间戳
            d.setTime(d.getTime()-1000);//过期的时间戳i
            var expires="expires="+d.toUTCString();
            document.cookie="name"+"="+name.value+";"+expires;
        }
        function removeAge() {
            var name=document.getElementById("age");
            var d=new Date();//当前的时间戳
            d.setTime(d.getTime()-1000);//过期的时间戳i
            var expires="expires="+d.toUTCString();
            document.cookie="age"+"="+name.value+";"+expires;
        }

3.2.3 函数式的创建和删除

通过函数动态添加和删除Cookie,参考
https://www.runoob.com/js/js-cookies.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //传入不同的键值对
        var setCookie=function (cname,cvalue,exdays) {
            var d=new Date();
            d.setTime(d.getTime()+(exdays*24*60*60*1000));//这里通过计算获得时间戳
            var expires="expires="+d.toUTCString();
            document.cookie=cname+"="+cvalue+";"+expires;
        };
        var getCookie=function(cname){//分割字符串,根据键名查找值。
            var name = cname + "=";
            var ca = document.cookie.split(';');
            for(var i=0; i<ca.length; i++) {
                var c = ca[i].trim();
                if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
            }
            return "";
        };
        //设置过期时间
        var deleteCookie=function (cname) {
            var d=new Date();
            d.setTime(d.getTime()-1000);//这里通过计算获得时间戳
            var expires="expires="+d.toUTCString();
            document.cookie=cname+"="+"abc"+";"+expires;//此处的abc是个随意的值。
        };
    </script>
    <style>
        *{
           font-size: 30px;
        }
    </style>
</head>
<body>
<form>
    键名<input type="text" id="key" ><br/>
    值名<input type="text" id="value"><br/>
    过期天数<input type="text" id="exdays"><br/>
    <input type="button" value="创建cookie" onclick="setCookie(document.getElementById('key').value,
                                                            document.getElementById('value').value,
                                                            document.getElementById('exdays').value)">
    <input type="button" value="删除cookie" onclick="deleteCookie(document.getElementById('key').value)">
    <input type="button" value="查看cookie" onclick="alert(getCookie(document.getElementById('key').value))">
</form>
</body>
</html>

3.3 如今Cookie实际的用处

当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息。

猜你喜欢

转载自blog.csdn.net/weixin_44055272/article/details/89743367