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对象中的方法、属性来应用学习。

相关文章
|
3天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
16 3
|
1天前
|
前端开发 JavaScript UED
Web前端开发:探索技术与艺术的交融
Web前端开发:探索技术与艺术的交融
8 1
|
1天前
|
前端开发 JavaScript Java
前端与后端:构建现代Web应用的双翼
前端与后端:构建现代Web应用的双翼
|
4天前
|
JavaScript 前端开发 开发者
JavaScript中的错误处理:try-catch语句与错误对象
【4月更文挑战第22天】JavaScript中的错误处理通过try-catch语句和错误对象实现。try块包含可能抛出异常的代码,catch块捕获并处理错误,finally块则无论是否出错都会执行。错误对象提供关于错误的详细信息,如类型、消息和堆栈。常见的错误类型包括RangeError、ReferenceError等。最佳实践包括及时捕获错误、提供有用信息、不忽略错误、利用堆栈信息和避免在finally块中抛错。
|
10天前
|
JavaScript
【Js】检查Date对象是否为Invalid Date
【Js】检查Date对象是否为Invalid Date
14 0
|
11天前
|
存储 JavaScript 前端开发
JavaScript的引用数据类型主要包括对象
【4月更文挑战第16天】JavaScript的引用数据类型主要包括对象
16 4
|
11天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
18 1
|
设计模式 Web App开发 存储
移动 Web 开发的10个优秀 JavaScript 框架
选择正确的 JavaScript 框架,对于开发移动 Web 应用程序是至关重要的,也是移动应用程序开发的一项重要任务。开发人员可以使用框架实现的功能高效地达到他们的开发目标。这些预实现的组件采用优秀的设计模式和最佳实践,促进应用程序以标准化的方式开发。最重要的是,它让开人员在开发过程中得心应手。
311 0
移动 Web 开发的10个优秀 JavaScript 框架
|
Web App开发 移动开发 JavaScript
12款简化 Web 开发的 JavaScript 开发框架
  前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者。在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScript 框架清单。
1418 0
|
移动开发 JavaScript 前端开发
15款加速 Web 开发的 JavaScript 框架
  JavaScript 可以通过多种方式来创建交互式的网站和 Web 应用程序。利用 JavaScript,可以让你移动 HTML 元素,创建各种各样的自定义动画,给你的访问者更好的终端用户体验。   对于开发人员你来说,有无数的 JavaScript 框架可选择,往往是很难选择最适合您需要的。
944 0