美文网首页JavaScript专区
细说JavaScript BOM之window对象

细说JavaScript BOM之window对象

作者: 知数网络 | 来源:发表于2024-01-16 20:12 被阅读0次
    4b2963e7e4e94ed382173841ab12bd07.png

    window对象是JavaScript中最大的对象,其他对象都是window对象的一部分,window对象表示浏览器的一个实例,在浏览器中它有双重身份,既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript标准中规定的Globel(全局)对象。第二个身份说明了我们在==网页中定义的任何一个变量、函数和对象都会以window作为其全局对象==。


    0e540cf285da400c9a60639d6c5a5e6f.png

    一、window对象

    1、全局作用域

    window对象是全局对象,因此所有在全局作用域中声明的变量、函数、对象都会变成window对象的属性、方法、对象

    var name = "知数SEO";
    var array = new Array('1','2','3','4');
    function demo(){
        alert("myName this.name" + this.name);
        alert("muName window.name" + window.name);
    }
    alert(window.name);  // 知数SEO
    window.demo();
    alert(array);
    alert(window.array);
    

    基于window对象是全局对象的概念,它下属的所有全局变量和函数都是它的属性,并且基于所有原生的构造函数及其他函数都存在于它的命名空间下,因此在调用window对象的方法和属性时,可以省略window对象的引用。
    需要注意的是只有在全局作用域中定义才会被自动归入window对象名下,而在局部作用域中定义不会归入window对象名下。

    2、window对象常用属性

    window.name属性在跨域交互上起到很大的作用,因为name在完成载入新页面或刷新功能时,其值依旧是上次页面设置的值,并且这个值可以支持2MB的数据大小

    属性名称 功能描述
    name 窗口的名称,由打开这个窗口的连接(a target="")或框架(<iframe>)或某个窗口调用的open()方法来决定
    status 窗口下面的状态栏所显示的内容,通过对window.status赋值,可以改变状态栏的显示
    opener window.opener返回打开本窗口的对象,如果这个窗口不是由其他窗口打开的,则返回null
    self 指窗口本身,如最常见的window.self.close()和window.close()方法,用于关闭窗口
    parent 返回窗口所属的父窗口
    top 返回占据整个浏览器窗口顶端的框架页对象
    innerheight 返回窗口的文档显示取的宽度
    innerwidth 返回窗口的文档显示区的宽度
    history 对history对象的只读引用
    document 对document对象的只读引用
    location 用于窗口或框架的location对象
    navigator 对navigator对象的只读引用
    screen 对screen对象的只读引用

    3、定时器和周期事件

    名称 描述
    setTimeout() 在指定的毫秒数后调用函数或计算表达式
    clearTimeout() 取消setTimeout()对象
    setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式
    clearInterval() 取消setInterval()实例
    3.1、setTimeout()

    js是单线程语言,在执行程序时按照顺序排下来,前面的程序必须处理好,后面的程序才会被执行。因此js中允许通过设置超时值和间时间值来调度代码在特定的时刻被执行,以打破执行顺序的限制。
    超时值指在指定的时间后执行某段代码,==仅执行一次==
    间时间值是指==每隔指定的时间段就会执行一次==某一段代码

    //  settimeout()接收两个参数
    // 参数一:要执行的调用函数或计算表达式
    // 参数二:以毫秒表示的时间
    // 语法格式
    setTimeout(code,milliseconds);
    
    // 例子
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>知数SEO_专注搜索引擎优化和品牌推广</title>
    </head>
    <body>
    <input type="button" onclick="demo()" value="获取3秒后的时间是">
    <p></p>
    <script>
            function demo() {
                var op = document.getElementsByTagName('p')[0];  // 获取p标签对象
                var curTime = new Date(); // 获取当前时间
                op.innerHTML = "当前时间是:" + curTime;  // 添加当前时间为p标签里的内容
                setTimeout(function(){
                    var curTime2 = new Date();  // 获取3秒后的时间
                    alert(curTime2);
                },3000);
            }
    </script>
    </script>
    </body>
    </html>
    
    3.2、clearTimeout()

    在调用setTimeout()方法后会返回一个数值ID,表示超时调用,这个ID是计划执行代码的唯一标识符,可以通过它来取消未执行的超时调用计划,这时我们可以获取到这个id然后将这个id作为clearTimeout()方法的参数进行传递,销毁、关闭这个定时器事件

    // 语法
    clearTimeout(id);
    
    // 例子
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>知数SEO_专注搜索引擎优化和品牌推广</title>
    </head>
    <body>
    <input type="button" onclick="demo()" value="获取3秒后的时间是">
    <input type="button" onclick="stop()" value="取消执行超时调用">
    <p></p>
    <script>
            var timer;
            function demo() {
                var op = document.getElementsByTagName('p')[0];  // 获取p标签对象
                var curTime = new Date(); // 获取当前时间
                op.innerHTML = "当前时间是:" + curTime;  // 添加当前时间为p标签里的内容
                timer = setTimeout(function(){
                    var curTime2 = new Date();  // 获取3秒后的时间
                    alert(curTime2);
                },3000);
            }
    
            function stop(){
                clearTimeout(timer);
                alert("取消成功");
            }
    </script>
    </script>
    </body>
    </html>
    
    3.3、setInterval()
    // 语法
    // 参数1: 要执行的调用函数或计算表达式
    // 参数2:以毫秒表示的事件
    setInterval(code,milliseconds);
    
    // 例子
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>知数SEO_专注搜索引擎优化和品牌推广</title>
    </head>
    <body>
    <p>距离活动结束时间还有:</p>
    <p id="restTime"></p>
    <script>
        setInterval(function(){
            var dateTime = countDown();
            var restTime = document.getElementById('restTime');
            restTime.innerHTML = dateTime;
        },1000);
        function countDown(){
            // 设置未来时间
            var setTime = new Date('2024-1-28 08:00:00');
            // 获取当前时间
            var nowTime = new Date();
            // 时差
            var rest = setTime.getTime() - nowTime.getTime();
            // 计算时间
            var day = parseInt(rest/1000/60/60/24);
            var hour = parseInt(rest/1000/60/60%24);
            var minute = parseInt(rest/1000/60%60);
            var second = parseInt(rest/1000%60);
            var mydate = day + "日" + hour + "时" + minute + "分" + second + "秒";
            return mydate;
        }
    </script>
    </script>
    </body>
    </html>
    
    3.4、claerInterval()
    // 语法
    // 调用clearInterval()方法同样会返回一个间歇调用id
    clearInterval(id);
    
    // 例子
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>知数SEO_专注搜索引擎优化和品牌推广</title>
    </head>
    <body>
    <p>距离活动事件结束还有:</p>
    <p id="restTime"></p>
    <input type="button" value="取消倒计时" id="clear">
    <script>
        // 获取取消按钮对象
        var oClear = document.getElementById('clear');
        var timer = setInterval(function (){
            var dateTime = countDown();
            var restTime = document.getElementById('restTime');
            restTime.innerHTML = dateTime;
        },1000);
        oClear.onclick = function (){
            clearInterval(timer);
            alert("取消成功");
        };
        function countDown(){
            // 设置未来时间
            var setTime = new Date('2024-1-28 08:00:00');
            // 获取当前时间
            var nowTime = new Date();
            // 时差
            var rest = setTime.getTime() - nowTime.getTime();
            // 计算时间
            var day = parseInt(rest/1000/60/60/24);
            var hour = parseInt(rest/1000/60/60%24);
            var minute = parseInt(rest/1000/60%60);
            var second = parseInt(rest/1000%60);
            var mydate = day + "日" + hour + "时" + minute + "分" + second + "秒";
            return mydate;
        }
    
    </script>
    </script>
    </body>
    </html>
    

    4、其他常用方法

    4.1、窗口焦点控制方法
    名称 描述
    focus() 把键盘焦点给予某一个窗口
    blur() 把键盘焦点从顶层窗口移开
    4.2、新建窗口方法
    名称 描述
    opener() 通过opener可以实现跨窗体之间的通信,但要保证是在统一域名下,而且一个窗体要包含另一个窗体
    open() 打开一个新的浏览器窗口或查找一个已命名的窗口
    close() 关闭浏览器窗口
    4.3、对话框方法
    名称 描述
    alert() 显示带有一段消息和一个确认按钮的警报框
    confirm() 显示带有一段消息及确认按钮和取消按钮的对话框
    prompt() 显示可提示用户输入的对话框
    4.4、控制窗口大小和位置方法
    名称 描述
    resizeBy() 按照指定的像素调整窗口的大小
    resizeTo() 把窗口的大小调整到指定的宽度和高度
    moveBy() 可相对窗口的当前坐标把它移动指定的像素
    moveTo() 把窗口的左上角移动到一个指定的坐标

    5、窗口操作--分帧

    5.1、窗口分帧

    什么是窗口:我们可以通过窗口显示信息或者操作获取信息
    窗口可分为不同类型,例如:通过window.open()来打开一个新的可定义宽度和高度的窗口;alert() confirm() prompt()这种弹窗;
    什么是分帧:浏览器窗口显示的内容我们称为页面,这个页面就叫帧。==窗口分帧就是把一个浏览器文档窗口分隔成多个窗口,使得每个窗口都可以显示一个独立的网页文件,而且每个帧(页面)都有自己的url==

    5.2、如何分帧

    通常用<frameset> 和 <frame> 创建。
    <frameset>标签的常用属性

    // 1、cols和rows,决定页面如何分隔的两个参数
    // 分隔左右窗口用cols,各帧的左右宽度用占总窗口宽度的百分比表示 cols="30%,40%,*"
    // 分隔上下窗口用rows
    
    // 2、frameborder,指定各窗口是(yes)否(no)要加边框
    // 如果要加边框则用border参数指定边框的宽度,bordercolor参数指定边框的颜色
    
    // 3、framespacing,用户设定各窗口之间的间隔大小,默认为0   
    

    <frame>标签的常用属性

    // 1、align,设定分窗口的位置是靠左(left)、靠右(rignt)、居中(center)、靠上(top)、靠下(bottom)
    
    // 2、name,用于指定分窗口的名字,src则用于指定分窗口所对应的url
    
    // 3、noresize,对于用户来说,当\<frame\>标签中包含此参数的时候,用户就不能用鼠标调整各分窗口的大小
    
    // 4、scrolling,设定分窗口是否需要滚动条
    // 当scrolling=no时表示不需要滚动条
    // 当scrolling=yes时表示需要滚动条
    // 当scrolling=auto时表示根据实际情况自动设置滚动条
    
    // 5、frameborder 和 framecolor,分表表示设置窗口有无边框和边框颜色
    
    // 6、marginheiht 和 marginwidth,分别用于设定分窗口的上下边缘和左右宽度
    
    5.3、如何操作分帧

    相关文章

      网友评论

        本文标题:细说JavaScript BOM之window对象

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