BOM

作者: 村东头老骥 | 来源:发表于2020-06-11 23:20 被阅读0次

BOM

简介:浏览器对象模型,BOM可以使我们通过JS来操作浏览器,在BOM中为我们提供了一组对象,用来完成对浏览器的操作.

BOM对象:

  • Window : 代表的是整个浏览器的窗口,同时window也是网页中的全局对象

  • Navigator : 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器

  • Location : 代表当前浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面

  • History : 代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录,由于隐私原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页,而且该操作只在当次访问时有效

  • Screen : 代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关的信息

【注意】:这些BOM对象在浏览器中都是作为window对象的属性保存的,可以通过window对象来使用,也可以直接使用

Navigator

简介:代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器,由于历史原因,Navigator对象中的大部分属性都已经不能帮助我们识别浏览器了,一般我们只会使用userAgent来判断浏览器的信息,userAgent是一个字符串,这个字符串中包含有用来描述浏览器信息的内容,不同的浏览器会有不同的userAgent

代码示例

console.log(navigator.userAgent)
// 谷歌浏览器
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
// 火狐浏览器
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0
// IE8
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

// IE9
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

// IE10
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

// IE11
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko

// 判断当前浏览器的信息
if (/firefox/i.test(navigator.userAgent)) {
    alert('火狐浏览器')
} else if (/Chrome/i.test(navigator.userAgent)) {
    alert('谷歌浏览器')
} else if (/msie/i.test(ua)) {
    alert("你是IE浏览器~~~");
} else if ("ActiveXObject" in window) {
    alert("你是IE11,枪毙了你~~~");
}

判断是否是IE浏览器

/*
* 如果通过UserAgent不能判断,还可以通过一些浏览器中特有的对象,来判断浏览器的信息
* 比如:ActiveXObject
*/
if ("ActiveXObject" in window) {
    alert("你是IE,我已经抓住你了~~~");
} else {
    alert("你不是IE~~~");
}

History

简介:对象可以用来操作浏览器向前或向后翻页

常用的属性方法

  • length:属性,可以获取到当成访问的链接数量

  • back():可以用来回退到上一个页面,作用和浏览器的回退按钮一样

  • forward() :可以跳转下一个页面,作用和浏览器的前进按钮一样

  • go() :可以用来跳转到指定的页面

    参数:

    • 1 : 表示向前跳转一个页面 相当于forward()
    • 2 : 表示向前跳转两个页面
    • -1 : 表示向后跳转一个页面
    • -2 : 表示向后跳转两个页面
    <script type="text/javascript">
        // alert(history.length)
        window.onload = function () {

            // 获取按钮对象
            var btn = document.getElementById("btn")

            btn.onclick = function () {
                // 返回上一页
                history.back();
                // 返回下一页
                history.forward();
            }

        }
    </script>

Location

简介:该对象中封装了浏览器的地址栏的信息

常用的属性和方法

  • location : 如果直接打印location,则可以获取到地址栏的信息(当前页面的完整路径)

    如果直接将location属性修改为一个完整的路径,或相对路径,则我们页面会自动跳转到该路径,并且会生成相应的历史记录
    location = "http://www.baidu.com";
    
  • assign() :用来跳转到其他的页面,作用和直接修改location一样

    location.assign("http://www.baidu.com");
    
  • reload() : 用于重新加载当前页面,作用和刷新按钮一样,如果在方法中传递一个true,作为参数,则会强制清空缓存刷新页面

    location.reload(true);
    
  • replace() : 可以使用一个新的页面替换当前页面,调用完毕也会跳转页面,不会生成历史记录,不能使用回退按钮回退

    location.replace("01.BOM.html");
    

window

定时调用

简介 :JS的程序的执行速度是非常非常快的,如果希望一段程序,可以每间隔一段时间执行一次,可以使用定时调用

setInterval()

  • 定时调用,可以将一个函数,每隔一段时间执行一次
  • 参数:
    1. 回掉函数,该函数会每隔一段时间被调用一次
    2. 每次调用间隔的时间,单位是毫秒
  • 返回值
    1. 返回一个Number类型的数据
    2. 这个数字用来作为定时器的唯一标识
  • 关闭定时器:clearInterval(timer)可以用来关闭一个定时器
    • 参数:定时器的唯一标识

代码示例

        window.onload = function () {
            var count = document.getElementById('count');

            // for (var i = 0; i < 1000; i++) {
            //     count.innerHTML = i;
            // }

            var num = 1;
            var timer = setInterval(function () {
                count.innerHTML = num++;
                if (num == 11) {
                    //关闭定时器
                    clearInterval(timer);
                }
            }, 1000);
        }

延时调用

简介 : 延时调用一个函数不马上执行,而是隔一段时间以后在执行,而且只会执行一次延时调用和定时调用的区别,定时调用会执行多次,而延时调用只会执行一次延时调用和定时调用实际上是可以互相代替的,在开发中可以根据自己需要去选择

代码示例

        <script type="text/javascript">
            
            var num = 1;

            var timer = setTimeout(function(){
                console.log(num++);
            },3000);
            
            //使用clearTimeout()来关闭一个延时调用
            clearTimeout(timer);
            
        </script>

相关文章

网友评论

      本文标题:BOM

      本文链接:https://www.haomeiwen.com/subject/akkwtktx.html