JS高级程序设计-第八章:BOM

window对象
使用var 语句 和 直接定义在window对象上的变量的区别,前者不可使用delete方法删除,而后者可以

        var age = 23;
        window.color = 'pink';
        delete age;  //没有删除成功
        delete window.color;
        console.log(age);   //age
        console.log(window.color);  //undefined

窗口关系及框架
使用window对象中的属性和方法,可以改变窗口的位置和大小,还可以导航或者打开新窗口,设置弹出窗口屏蔽等。
超时调用
JS是单线程解释器,即一段时间内只执行一段代码。会按照任务在队列中的顺序执行。使用setTimeout()方法可以延缓指定时间,再把任务插入到队列中。该方法会返回一个数值ID, 表示超市调用,后续可以通过clearTimeout() 取消
间歇调用
setInterval() 按照指定的时间间隔重复的执行代码, 直到被取消。

//数值增加到最大值后停止增加
        //使用setInterval
        var num = 0;
        var max = 10;
        var intervalID = null;
        function numberIncrease() {
            num++;
            //当数字达到最大值时,停止间歇调用
            if (num == max) {
              clearInterval(intervalID)
              alert('done')
            }
        }
        intervalID = setInterval(numberIncrease, 1000)
        
        //使用setTimeout方法实现同样的功能
        //必须再函数内外各调用一次,但是不用特意设置停止,可以
        //用来替换间歇调用。
        function numberIncrease1() {
            num++;
            if (num < max) {
                setTimeout(numberIncrease1, 1000)
            } else {
                alert('done')
            }
        }
        setTimeout(numberIncrease1, 1000)

系统对话框

        //三种系统对话框confirm, alert, prompt
        if (confirm('Are your sure ?')) {
            alert("I'm so glad you are sure!")
        } else {
            alert("I'm sorry to hear you are not sure.")
        }

        //prompt提示框,提示用户输入一些文本
        var result = prompt("what's your name?", "");
        if (result != null) {
            alert("Hi, " + result)
        }

BOM中location对象的使用

查询字符串参数
查询location.search中返回的URL字符串,可使用下列函数:

//查询url中包含的字符串参数
        str = "?q=%E6%B7%B1%E5%9C%B3%E5%B8%82%E5%85%89%E6%98%8E%E5%8C%BA%E8%BE%B9%E7%95%8C%E7%BA%BF%E6%95%B0%E6%8D%AE&qs=n&form=QBLH&sp=-1&pq=%E6%B7%B1%E5%9C%B3%E5%B8%82%E5%85%89%E6%98%8E%E5%8C%BA%E8%BE%B9%E7%95%8C%E7%BA%BF%E6%95%B0%E6%8D%AE&sc=0-11&sk=&cvid=B79FE7259587486FA193D4D92A87BB9C"
        function queryUrlString(locationSearch) {
            var qs = locationSearch.length > 0 ? locationSearch.substring(1): '';
            //保存数据的对象
            var args = {};
            //以"&"符号分解url,将每一项保存再数组中
            var items = qs.length ? qs.split('&'): [];
            var item = null,
                name = null,
                value = null;
            for (var i = 0; i < items.length; i++) {
                // console.log(items[i]);
                item = items[i].split('=');
                // console.log(item);
                name = decodeURIComponent(item[0]);
                value = decodeURIComponent(item[1]);
                //将解析后的数据以键值对的形式储存在args对象中
                if(name.length) {
                    args[name] = value;
                }
            }; 
            return args;  
        };
        result = queryUrlString(str)
        console.log(result);

随便在搜索引擎中输入的信息,使用该函数解析,最终返回的结果如下:
在这里插入图片描述

BOM中navigator, screen, history对象

检测浏览器的插件
检测某种插件是否存在于浏览器中,使用navigator对象中的plugins方法获取插件的类数组 (IE中无效)

        //检测是否包含某种插件                                                                                                                                                                                                                                                            
        function testPlugin(name) {
            name = name.toLowerCase();
            for (let i = 0; i < navigator.plugins.length; i++) {
                if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        alert(testPlugin('Chrome PDF Plugin'))

注册处理程序:
firefox2 为navigator对象新增了registerContentHandler()和registerProtocalHandler()方法,可以为让一个站点处理特定种类的信息。
站点:简单来说是一个文件夹,可以对网页相关的页面和素材进行统一管理,比如可以使用站点来将网页所需文件上传到网页服务器。
RSS文件:是一种基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。

screen 和 history对象在编程中使用较少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值