浏览器中BOM(浏览器对象模型)重点掌握对象之Window对象的属性与方法(下)

简介: 接上文

关闭窗口


既然window对象有打开窗口的函数,那肯定少不了关闭窗口的函数,我们可以通过 window对象.close() 的方式,关闭一个窗口,大多数的浏览器只允许关闭由自己的js代码打开的窗口


    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><button class="btn1">打开新窗口</button><button class="btn2">关闭新打开的窗口</button><script>    let btn1 = document.querySelector('.btn1')    let btn2 = document.querySelector('.btn2')    btn1.onclick = function () {      //将新打开的窗口的window对象返回给变量new_window        new_window = window.open()    }    btn2.onclick = function () {      //调用新打开窗口的window对象的close()方法        new_window.close()    }</script></body></html>


    动画展示


    f42595486cbc2184100056c5e0aeec62.jpg

    对话框


    Window对象还提供了3个方法来向用户显示简单的对话框,他们分别是:alert()confirm()prompt()


    alert()


    该方法传入一个字符串作为参数。执行时,在浏览器弹出一个消息提醒框,字符串会作为内容显示在框内。


    执行了该方法以后,会阻碍后面的js代码的运行,只有等用户手动关闭了该弹框以后,后面的js代码才会继续执行。


    这个是Window对象的方法,可以这样调用window.alert(),同时我们也可以省略window,直接这样写alert()


      alert('第一次弹出弹框')window.alert('第二次弹出弹框')


      动画展示


      bd16599da663286ef7e7a1c65fe8b325.jpg


      confirm()


      该方法传入一个字符串作为参数。执行时,弹出一个消息框,字符串作为内容展示在框内,并且有 “确认” 和 “取消” 两个按钮,当点击 “确认” 时,返回true;当点击 “取消” 时,返回false。


      执行了该方法以后,会阻碍后面的js代码的运行,只有等用户点击了某个按钮以后,后面的js代码才会继续执行。


      调用该方法,window 可以省略,即可以这样调用 confirm()


        let ret1 = confirm('你确定吗?')console.log(ret1, 1)
        let ret2 = window.confirm('真的确定吗?')console.log(ret2, 2)


        动画展示


        b1f1846cb8cc9567142acfd68046017e.jpg


        prompt()


        该方法传入一个字符串作为参数。执行时,弹出一个框,字符串作为内容展示在框内,并且框内还有一个文本框,用户可以在文本框内输入内容。同时也有 “确定” 和 “取消” 两个按钮,若点 “确定”,则返回用户文本框内输入的字符串;若点 “取消”,则返回null


        执行了该方法以后,会阻碍后面的js代码的运行,只有等用户点击了某个按钮以后,后面的js代码才会继续执行。


        调用该方法,window 也可以省略,即可以这样调用 prompt()


          let ret1 = prompt('你是谁?')console.log(ret1, 1)
          let ret2 = window.prompt('你吃饭了吗?')console.log(ret2, 2)


          动画展示


          9f6a0abb57bdbc28e1da06b23c8a4aea.jpg


          其实除了这三种简单的对话框外,还有一种复杂的对话框,叫做模态对话框,调用方法为showModalDialog(),它的实质就是将另一个HTML文件作为弹框显示在页面中,因为比较复杂,用到的也不多,我就不多做讲解了,感兴趣的可以去网上自己看下文档。


          Window对象的属性


          要是说到Window对象的属性的话,那可就多了,我们先来讲一个常用的,例如opener ,该属性返回一个window对象,表示该窗口是由谁打开的。若不是被别的窗口打开,则返回null;若是被别的窗口打开,则返回那个窗口的window对象。刚刚我们上面将了window对象的open()方法,并且知道了open()方法会返回新打开窗口的window对象。接下来我们来看一下例子


            <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><button class="btn1">打开新窗口</button><button class="btn2">控制新打开的窗口</button><script>    let btn1 = document.querySelector('.btn1')    let btn2 = document.querySelector('.btn2')    let new_window = null    //弹出弹框,展示当前窗口的opener属性    alert(window.opener)    btn1.onclick = function () {        new_window = window.open()    }    btn2.onclick = function () {      //控制新窗口弹出弹框,判断新打开窗口的opener是否为当前窗口的window对象        new_window.alert(new_window.opener === window)    }</script></body></html>


            动画展示


            0dfeb96b14080e6d5449c7c956536d6d.jpg


            还有更多的window对象属性,其实都是通过调用了别的对象的属性来引用的,因为window对象表示的整个窗口,所以window对象是最大的一个对象,在他里面还有很多别的对象,我们可以通过window.别的浏览器内置对象来引用别的对象属性。举个例子先location.href就是调用了Location对象,同时我们也可以这样调用Location对象 window.location,这两者相等。


            感谢观看~

            相关文章
            |
            3月前
            |
            XML 编解码 JavaScript
            DOM(文档对象模型)和 BOM(浏览器对象模型)
            【10月更文挑战第19天】在前端开发中,理解 DOM(文档对象模型)和 BOM(浏览器对象模型)是至关重要的。它们是 Web 开发的基础,为我们提供了与网页文档和浏览器进行交互的能力。
            |
            3月前
            |
            Web App开发 JavaScript 前端开发
            JavaScript Window - 浏览器对象模型
            JavaScript Window - 浏览器对象模型
            31 2
            |
            3月前
            |
            算法 安全 前端开发
            基于postMessage和BroadcastChannel实现浏览器跨Tab窗口通信的方法介绍
            基于postMessage和BroadcastChannel实现浏览器跨Tab窗口通信的方法介绍
            123 0
            |
            4月前
            |
            JavaScript 前端开发
            js之浏览器对象|28
            js之浏览器对象|28
            |
            5月前
            |
            JavaScript 前端开发
            JavaScript BOM 的概念(浏览器对象模型)
            JavaScript BOM 的概念(浏览器对象模型)
            62 1
            |
            2月前
            |
            JSON 移动开发 JavaScript
            在浏览器执行js脚本的两种方式
            【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
            在浏览器执行js脚本的两种方式
            |
            2月前
            |
            JavaScript 前端开发 数据处理
            模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
            综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
            |
            2月前
            |
            算法 开发者
            Moment.js库是如何处理不同浏览器的时间戳格式差异的?
            总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
            53 1
            |
            2月前
            |
            机器学习/深度学习 自然语言处理 前端开发
            前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
            本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
            200 1
            |
            3月前
            |
            机器学习/深度学习 自然语言处理 前端开发
            前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
            除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
            676 1