web前端学习(四十三)——JavaScript BOM简介、BOM-Window对象实例

简介: web前端学习(四十三)——JavaScript BOM简介、BOM-Window对象实例

1.JS BOM简介(浏览器对象模型)


浏览器对象模型(Browser Object Model (BOM))尚无正式标准。

由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。

Window对象表示浏览器中打开的窗口。

所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

全局变量 window 对象的属性。全局函数是 window 对象的方法。

甚至 HTML DOM document 也是 window 对象的属性之一:

window.document.getElementById("header");

与此相同:

document.getElementById("header");

1.1 实例:显示浏览器的宽度和高度

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>JS简单学习</title>
  </head>
  <body>
    <p id="demo"></p>
    <script type="text/javascript">
      var w=window.innerWidth
      || document.documentElement.clientWidth
      || document.body.clientWidth;
      var h=window.innerHeight
      || document.documentElement.clientHeight
      || document.body.clientHeight;
      x=document.getElementById("demo");
      x.innerHTML="浏览器window宽度: " + w + ", 高度: " + h + "。";
    </script>
  </body>
</html>


2.Window对象实例


2.1 Window对象属性

2.2 Window对象方法

2.3 实例一:显示带有一段消息以及确认按钮和取消按钮的对话框

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <p>点击按钮,显示确认框。</p>
    <button type="button" onclick="myFunction()">点我</button>
    <p id="demo"></p>
    <script type="text/javascript">
      function myFunction() {
        var x;
        var r=confirm("按下按钮!");
        if(r==true) {
          x="你按下了\"确定\"按钮!";
        }else {
          x="你按下了\"取消\"按钮!";
        }
        document.getElementById("demo").innerHTML=x;
      }
    </script>
  </body>
</html>

2.4 实例二:显示可提示用户输入的对话框

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <p>点击按钮查看输入的对话框。</p>
    <button type="button" onclick="myFunction()">点我</button>
    <p id="demo"></p>
    <script>
      function myFunction() {
        var x;
        var person=prompt("请输入你的名字","JS BOM");
        if(person!=null && person!="") {
          x="你好 " + person + "! 今天感觉如何?";
          document.getElementById("demo").innerHTML=x;
        }
      }
    </script>
  </body>
</html>

2.5 实例三:打开一个新的浏览器窗口或查找一个已命名的窗口

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <form>
      <input type="button" value="打开新窗口" onclick="openWindow()"/>
    </form>
    <script type="text/javascript">
      function openWindow() {
        window.open("https://www.baidu.com");
        //可以打开多个窗口
        //window.open("https://www.tencent.com");
        //可以控制打开窗口的外观
        //window.open("https://www.baidu.com","_blank","toolbar=yes,location=yes,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no,copyhistory=yes,width=400,height=400");
      }
    </script>
  </body>
</html>

2.6 实例四:把键盘焦点给予一个窗口

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <input type="button" value="打开新窗口" onclick="openWindow()" />
    <input type="button" value="关闭新窗口" onclick="closeWindow()" />
    <script type="text/javascript">
      function openWindow() {
        myWindow=window.open("","","width=200,height=100");
        myWindow.document.write("<p>这是我的窗口。</p>");
        myWindow.focus();
      }
      function closeWindow() {
        myWindow.close();
      }
    </script>
  </body>
</html>

2.7 实例五:检查新窗口是否关闭

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <input type="button" value="打开新窗口" onclick="openWindow()" />
    <input type="button" value="关闭新窗口" onclick="closeWindow()" />
    <br /><br />
    <input type="button" value="该窗口被关闭了吗?" onclick="checkWindow()" />
    <br />
    <div id="demo"></div>
    <script type="text/javascript">
      var myWindow;
      function openWindow() {
        myWindow=window.open("","","width=400,height=200");
      }
      function closeWindow() {
        if(myWindow) {
          myWindow.close();
        }
      }
      function checkWindow() {
        if(!myWindow) {
          document.getElementById("demo").innerHTML="我的窗口没有被打开!";
        }else {
          if(myWindow.closed) {
            document.getElementById("demo").innerHTML="我的窗口被关闭!";
          }else {
            document.getElementById("demo").innerHTML="我的窗口没有被关闭!";
          }
        }
      }
    </script>
  </body>
</html>

2.8 实例六:用setTimeout() clearTimeout() 设置和停止定时器

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
    <script type="text/javascript">
      var c=0;
      var t;
      var time_is_on=false;
      function timesCount() {
        document.getElementById("txt").value=c;
        c=c+1;
        t=setTimeout(function() {timesCount()},1000);
      }
      function startTime() {
        if(!time_is_on) {
          time_is_on=true;
          timesCount();
        }
      }
      function stopTime() {
        clearTimeout(t);
        time_is_on=false;
      }
    </script>
  </head>
  <body>
    <form>
      <input type="button" value="开始计数!" onclick="startTime()"/>
      <input type="text" id="txt" />
      <input type="button" value="停止计数!" onclick="stopTime()"/>
    </form>
    <p>
      单击开始计数按钮,按下时开始计数,输入框将从0开始一直计数。单击停止计数按钮,按下时停止计数,再次点击开始计数按钮,又再次开始计数。
    </p>
  </body>
</html>

写在结尾:由于JS BOMWindow对象的实例有很多,在这里只是举几个简单的例子,大家可以自行使用Window对象中的方法、属性来应用学习。

相关文章
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
50 3
|
20天前
|
存储 JavaScript 前端开发
JavaScript学习第一章
本文档介绍了JavaScript的基础知识,包括其在网页中的作用、如何通过JavaScript动态设置HTML元素的CSS属性,以及JavaScript中的变量类型(`var`、`let`、`const`)和数据类型(基本数据类型与引用数据类型)。通过实例代码详细解释了JavaScript的核心概念,适合初学者入门学习。
45 1
|
22天前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
1月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
设计模式 Web App开发 存储
移动 Web 开发的10个优秀 JavaScript 框架
选择正确的 JavaScript 框架,对于开发移动 Web 应用程序是至关重要的,也是移动应用程序开发的一项重要任务。开发人员可以使用框架实现的功能高效地达到他们的开发目标。这些预实现的组件采用优秀的设计模式和最佳实践,促进应用程序以标准化的方式开发。最重要的是,它让开人员在开发过程中得心应手。
529 0
移动 Web 开发的10个优秀 JavaScript 框架
|
Web App开发 移动开发 JavaScript
12款简化 Web 开发的 JavaScript 开发框架
  前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者。在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScript 框架清单。
1464 0
|
移动开发 JavaScript 前端开发
15款加速 Web 开发的 JavaScript 框架
  JavaScript 可以通过多种方式来创建交互式的网站和 Web 应用程序。利用 JavaScript,可以让你移动 HTML 元素,创建各种各样的自定义动画,给你的访问者更好的终端用户体验。   对于开发人员你来说,有无数的 JavaScript 框架可选择,往往是很难选择最适合您需要的。
976 0
|
Web App开发 移动开发 JavaScript
【今日推荐】移动 Web 开发的10个最佳 JavaScript 框架
  选择正确的 JavaScript 框架,对于开发移动 Web 应用程序是至关重要的,也是移动应用程序开发的一项重要任务。开发人员可以使用框架实现的功能高效地达到他们的开发目标。这些预实现的组件采用优秀的设计模式和最佳实践,促进应用程序以标准化的方式开发。
1980 0
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
101 2
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
139 4