JavaScript学习笔记(十一):JS Browser BOM

news2025/1/11 7:45:03

1、JavaScript Window - 浏览器对象模型

  • 浏览器对象模型(Browser Object Model (BOM))允许 JavaScript 与浏览器对话。

1.1 浏览器对象模型(Browser Object Model (BOM))

  • 不存在浏览器对象模型(BOM)的官方标准。

  • 现代的浏览器已经(几乎)实现了 JavaScript 交互相同的方法和属性,因此它经常作为 BOM 的方法和属性被提到。

1.2 Window 对象

  • 所有浏览器都支持 window 对象。它代表浏览器的窗口。

  • 所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员。

  • 全局变量是 window 对象的属性。

  • 全局函数是 window 对象的方法。

  • 甚至(HTML DOM 的)document 对象也是 window 对象属性:

window.document.getElementById("header");

等同于:

document.getElementById("header");

1.3 窗口尺寸

  • 两个属性可用用于确定浏览器窗口的尺寸。

  • 这两个属性都以像素返回尺寸:

window.innerHeight - 浏览器窗口的内高度(以像素计)
window.innerWidth - 浏览器窗口的内宽度(以像素计)
  • 浏览器窗口(浏览器视口)不包括工具栏和滚动条。

  • 对于 Internet Explorer 8, 7, 6, 5:

document.documentElement.clientHeight
document.documentElement.clientWidth

document.body.clientHeight
document.body.clientWidth

示例:该例显示浏览器窗口的高度和宽度:(不包括工具栏和滚动条):

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>

    <script>
      var w =
        window.innerWidth ||
        document.documentElement.clientWidth ||
        document.body.clientWidth;

      var h =
        window.innerHeight ||
        document.documentElement.clientHeight ||
        document.body.clientHeight;

      var x = (document.getElementById("demo").innerHTML =
        "浏览器内窗宽度:" + w + "<br>高度:" + h);
    </script>
  </body>
</html>

1.4 其他窗口方法

  • window.open() - 打开新窗口
  • window.close() - 关闭当前窗口
  • window.moveTo() -移动当前窗口
  • window.resizeTo() -重新调整当前窗口

2、JavaScript Window Screen

  • window.screen 对象包含用户屏幕的信息。

2.1 Window Screen

window.screen 对象不带 window 前缀也可以写:
属性:

  • screen.width
  • screen.height
  • screen.availWidth
  • screen.availHeight
  • screen.colorDepth
  • screen.pixelDepth

2.2 Window Screen 宽度:screen.width

  • screen.width 属性返回以像素计的访问者屏幕宽度。
 document.getElementById("demo").innerHTML =
        "Screen Width:" + window.screen.width;

输出:Screen Width:1920

2.3 Window Screen 高度:screen.height

  • screen.height 属性返回以像素计的访问者屏幕的高度。
  document.getElementById("demo").innerHTML =
        "Screen Height:" + window.screen.height;

输出:Screen Height:1080

2.4 Window Screen 可用宽度:screen.availWidth

  • screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去诸如窗口工具条之类的界面特征。
 document.getElementById("demo").innerHTML =
        "Screen availwidth:" + window.screen.availWidth;

输出:Screen availwidth:1920

2.5 Window Screen 可用高度:screen.availHeight

  • screen.availHeight 属性返回访问者屏幕的高度,以像素计,减去诸如窗口工具条之类的界面特征。
 document.getElementById("demo").innerHTML =
        "Screen availheight:" + window.screen.availHeight;

输出:Screen availheight:1040

2.6 Window Screen 色深:screen.colorDepth

  • screen.colorDepth 属性返回用于显示一种颜色的比特数。

  • 所有现代计算机都使用 24 位或 32 位硬件的色彩分辨率:

  • 24 bits =16,777,216 种不同的 “True Colors”

  • 32 bits = 4,294,967,296 中不同的 “Deep Colors”

  • 更老的计算机使用 14 位:65,536 种不同的 “High Colors” 分辨率。

  • 异常古老的计算机,以及老式的手机使用 8 位:256 中不同的 “VGA colors”。

  document.getElementById("demo").innerHTML =
        "Screen Color Depth:" + window.screen.colorDepth;

输出:Screen Color Depth:24

2.7 Window Screen 像素深度:screen.pixelDepth

  • screen.pixelDepth 属性返回屏幕的像素深度。
    document.getElementById("demo").innerHTML =
        "Screen Pixel Depth:" + window.screen.pixelDepth;

输出:Screen Pixel Depth:24

3、JavaScript Window Location

  • window.location 对象可用于获取当前页面地址(URL)并把浏览器重定向到新页面。

  • window.location 对象可不带 window 前缀书写。

一些例子:

  • window.location.href 返回当前页面的 href (URL)
  • window.location.hostname 返回 web 主机的域名
  • window.location.pathname 返回当前页面的路径或文件名
  • window.location.protocol 返回使用的 web 协议(http: 或 https:)
  • window.location.assign 加载新文档

3.1 当前页面的 URL:Window Location Href

 document.getElementById("demo").innerHTML = window.location.href;

输出:file:///E:/PC/Learn/html_01.html

更多内容:JavaScript Window Location

4、JavaScript Window History

  • window.history 对象包含浏览器历史。
    JavaScript Window History

5、JavaScript Window Navigator

  • window.navigator 对象包含有关访问者的信息。
    JavaScript Window Navigator

6、JavaScript 弹出框

  • JavaScript 有三种类型的弹出框:警告框、确认框和提示框。

6.1 警告框

  • 如果要确保信息传递给用户,通常会使用警告框。

  • 当警告框弹出时,用户将需要单击“确定”来继续。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button onclick="myDialog()">试一试</button>
    <script>
      function myDialog() {
        alert("这是一个警告框");
      }
    </script>
  </body>
</html>

6.2 确认框

  • 如果您希望用户验证或接受某个东西,则通常使用“确认”框。

  • 当确认框弹出时,用户将不得不单击“确定”或“取消”来继续进行。

  • 如果用户单击“确定”,该框返回 true。如果用户单击“取消”,该框返回 false。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>
    <button onclick="myDialog()">试一试</button>
    <script>
      var text = "";
      function myDialog() {
        if (confirm("这是一个确认框")) {
          text = "确认";
        } else {
          text = "取消";
        }
        document.getElementById("demo").innerHTML = text;
      }
    </script>
  </body>
</html>

6.3 提示框

  • 如果您希望用户在进入页面前输入值,通常会使用提示框。

  • 当提示框弹出时,用户将不得不输入值后单击“确定”或点击“取消”来继续进行。

  • 如果用户单击“确定”,该框返回输入值。如果用户单击“取消”,该框返回 NULL。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>
    <button onclick="myDialog()">试一试</button>
    <script>
      function myDialog() {
        var text = "";
        var personDialog = prompt("请输入您的名字:", "文阿花");
        if (personDialog == null || personDialog == "") {
          text = "用户取消输入";
        } else {
          text = "你好," + personDialog + "!今天过得好吗?";
        }
        document.getElementById("demo").innerHTML = text;
      }
    </script>
  </body>
</html>

在这里插入图片描述在这里插入图片描述

7、JavaScript Timing 事件

  • JavaScript 可以在时间间隔内执行。这就是所谓的定时事件Timing Events)。

7.1 Timing 事件

  • window 对象允许以指定的时间间隔执行代码。这些时间间隔称为定时事件

  • 通过 JavaScript 使用的有两个关键的方法:

setTimeout(function, milliseconds)

在等待指定的毫秒数后执行函数。

setInterval(function, milliseconds)

等同于 setTimeout(),但持续重复执行该函数。

  • setTimeout()setInterval() 都属于 HTML DOM Window 对象的方法。

7.1.1 setTimeout() 方法(单次执行

  • 语法:
window.setTimeout(function, milliseconds);

window.setTimeout() 方法可以不带 window 前缀来编写。

第一个参数是要执行的函数。

第二个参数指示执行之前的毫秒数。

示例:单击按钮。等待 3 秒,然后页面会提示 “Hello”:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>
    <button onclick="setTimeout(myClick,3000)">试一试</button>
    <script>
      function myClick() {
        document.getElementById("demo").innerHTML = "Hello";
      }
    </script>
  </body>
</html>

7.1.2 如何停止执行?

  • clearTimeout() 方法停止执行 setTimeout() 中规定的函数。
  • 语法:
window.clearTimeout(timeoutVariable)
  • window.clearTimeout() 方法可以不带 window 前缀来写。

  • clearTimeout() 使用从 setTimeout() 返回的变量:

myVar = setTimeout(function, milliseconds);
clearTimeout(myVar);

示例:类似上例,但是添加了“停止”按钮:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>
    <button onclick="myVar=setTimeout(myClick,3000)">试一试</button>
    <button onclick="clearTimeout(myVar)">停止</button>
    <script>
      function myClick() {
        document.getElementById("demo").innerHTML = "Hello";
      }
    </script>
  </body>
</html>

7.1.3 setInterval() 方法(重复执行

  • setInterval() 方法在每个给定的时间间隔重复给定的函数。
  • 语法:
window.setInterval(function, milliseconds);

window.setInterval() 方法可以不带 window 前缀来写。

第一个参数是要执行的函数。

第二个参数每个执行之间的时间间隔的长度。

示例:本例每秒执行一次函数 “myTimer”(就像数字手表)。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>
    <script>
      var myVar = setInterval(myTimer, 1000);
      function myTimer() {
        var d = new Date();
        document.getElementById("demo").innerHTML = d.toLocaleTimeString();
      }
    </script>
  </body>
</html>

7.1.4 如何停止执行?

  • clearInterval() 方法停止 setInterval() 方法中指定的函数的执行。
  • 语法:
window.clearInterval(timerVariable)

window.clearInterval() 方法可以不带 window 前缀来写。

clearInterval() 方法使用从 setInterval() 返回的变量:

myVar = setInterval(function, milliseconds);
clearInterval(myVar);

示例:类似上例,但是我们添加了一个“停止时间”按钮:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p id="demo"></p>
    <button onclick="clearInterval(myVar)">停止</button>
    <script>
      var myVar = setInterval(myTimer, 1000);
      function myTimer() {
        var d = new Date();
        document.getElementById("demo").innerHTML = d.toLocaleTimeString();
      }
    </script>
  </body>
</html>

8、JavaScript Cookies

  • Cookie 让您在网页中存储用户信息。

8.1 什么是 cookie?

  • Cookie 是在您的计算机上存储在小的文本文件中的数据。

  • web 服务器向浏览器发送网页后,连接被关闭,服务器会忘记用户的一切。

  • Cookie 是为了解决“如何记住用户信息”而发明的:

①、当用户访问网页时,他的名字可以存储在 cookie 中。
②、下次用户访问该页面时,cookie 会“记住”他的名字。

  • Cookie 保存在名称值对中,如:
username = Bill Gates
  • 当浏览器从服务器请求一个网页时,将属于该页的 cookie 添加到该请求中。这样服务器就获得了必要的数据来“记住”用户的信息。
  • 如果浏览器已关闭本地 cookie 支持,则以下实例均无法工作。

8.2 通过 JavaScript 创建 cookie

  • JavaScript 可以用 document.cookie 属性创建、读取、删除 cookie
  • 通过 JavaScript,可以这样创建 cookie:
document.cookie = "username=Bill Gates";

您还可以添加有效日期(UTC 时间)。默认情况下,在浏览器关闭时会删除 cookie:

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC";

通过 path 参数,您可以告诉浏览器 cookie 属于什么路径。默认情况下,cookie 属于当前页:

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

8.3 通过 JavaScript 读取 cookie

  • 通过 JavaScript,可以这样读取 cookie:
var x = document.cookie;
  • document.cookie 会在一条字符串中返回所有 cookie,比如:cookie1=value; cookie2=value; cookie3=value;

8.4 通过 JavaScript 改变 cookie

  • 通过使用 JavaScript,你可以像你创建 cookie 一样改变它,旧 cookie 被覆盖:
document.cookie = "username=Steve Jobs; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

8.5 通过 JavaScript 删除 cookie

  • 删除 cookie 非常简单。

  • 删除 cookie 时不必指定 cookie 值:

  • 直接把 expires 参数设置为过去的日期即可

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
  • 您应该定义 cookie 路径以确保删除正确的 cookie。

  • 如果你不指定路径,一些浏览器不会让你删除 cookie。

8.6 Cookie 字符串

  • document.cookie 属性看起来像一个正常的文本字符串。但它不是。

  • 即使你向 document.cookie 写一份完整的 cookie 字符串,当再次读取时,你只能看到它的名称-值对。

  • 如果设置了新 cookie,则旧的 cookie 不会被覆盖。新的 Cookie 会被添加到 document.cookie,所以如果你读取 document.cookie,你得到的东西会像这样:

cookie1 = value; cookie2 = value;
<!DOCTYPE html>
<html>
<head>
<script>
function setCookie(cname,cvalue,exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires=" + d.toGMTString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function checkCookie() {
  var user=getCookie("username");
  if (user != "") {
    alert("再次欢迎您," + user);
  } else {
     user = prompt("请输入姓名:","");
     if (user != "" && user != null) {
       setCookie("username", user, 30);
     }
  }
}
</script>
</head>

<body onload="checkCookie()"></body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【周易哲学】生辰八字入门讲解(一)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【周易哲学】生辰八字入门讲解&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 生辰八字阴阳五行天干地支天干天干天干五合天干…

怎么恢复电脑删除的数据?4种有效的数据恢复方法

在数字时代&#xff0c;数据已成为我们生活与工作的核心要素&#xff0c;它不仅存储着我们工作中的各种重要资料&#xff0c;也记录着个人生活的点点滴滴。无论是精心准备的工作文档或者珍藏的重点照片&#xff0c;在不经意间被误删、因设备故障、中病毒等原因导致丢失&#xf…

AI砸掉了这些人的饭碗

在一般打工人眼里&#xff0c;金融圈往往被认为是高端脑力工作者的聚集地&#xff0c;他们工资高&#xff0c;学历高&#xff0c;能力强&#xff0c;轻易无法被替代。 可最近&#xff0c;偏偏一个“非人类”的物种&#xff0c;要来抢他们的饭碗。相关报道称&#xff0c;华尔街…

因为不懂Redis集群,我被diss了

点赞再看&#xff0c;Java进阶一大半 Redis官方在官网里写着霸气的宣传语&#xff1a;从构建者那里获取世界上最快的内存数据库Get the world’s fastest in-memory database from the ones who built it。南哥相信国内没用Redis的科技公司也屈指可数。 现在Redis已经走向了商业…

C++学习:C++是如何运行的

C 是一种强类型的编程语言&#xff0c;支持面向对象、泛型和低级内存操作。它的工作机制包括从编写源代码到生成可执行文件的一系列步骤。C与文件无关&#xff0c;文件只是容纳运行内容的载体&#xff0c;需要对文件以目标系统的规则编译后&#xff0c;才能在目标系统中运行。 …

红酒与情感:品味中的情感共鸣

在生活的细微之处&#xff0c;情感如涓涓细流&#xff0c;无声无息却又深深地影响着我们。而红酒&#xff0c;这瓶中的液体&#xff0c;仿佛是情感的载体&#xff0c;让我们在品味中感受那些难以言说的情愫。当定制红酒洒派红酒&#xff08;Bold & Generous&#xff09;与情…

有什么快速进行同声传译的软件?6个软件帮助你快速进行同声传译

有什么快速进行同声传译的软件&#xff1f;6个软件帮助你快速进行同声传译 同声传译是将一种语言的讲话即时翻译成另一种语言的过程&#xff0c;对于跨语言沟通非常重要。以下是六款可以帮助你快速进行同声传译的软件&#xff0c;每款软件都有其独特的功能和优势。 语音翻译…

智能计算模拟: DFT+MD+ML 深度融合及科研实践应用

智能计算模拟&#xff1a; DFTMDML 深度融合及科研实践应用 第一 部分 DFTMDML基础 1. 理论内容&#xff1a; 理论内容&#xff1a; 1.1. 计算模拟发展&#xff1a;MD, MC, DFT三大部分 1.2. 人工智能时代背景&#xff1a; 大数据与大模型对模拟计算的影响 1.3. 人工智能…

【免费】如何考取HarmonyOS应用开发者基础认证和高级认证(详细教程)

HarmonyOS应用开发者认证考试PC网址 基础&#xff1a;华为开发者学堂 高级&#xff1a;华为开发者学堂 注&#xff1a;免费认证&#xff0c;其中基础认证有免费的课程&#xff0c;浏览器用Edge。 文章目录 目录 HarmonyOS应用开发者认证考试PC网址 前言 一、备考流程 1、注册…

【题解】【数学】—— [CSP-J 2023] 小苹果

【题解】【数学】—— [CSP-J 2023] 小苹果 [CSP-J 2023] 小苹果题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 1.题意分析2.代码 [CSP-J 2023] 小苹果 前置知识&#xff1a;数学分组思想&#xff0c;整体思想。 [CSP-J 2023] 小苹果 题目描述 小 Y 的桌子上…

家庭出游新宠儿!格瑞维亚改装大赛给出行带来无限可能

近期&#xff0c;格瑞维亚改装共创大赛的盛大开启&#xff0c;推动着改装领域前进的步伐。这场盛宴汇聚了400余份创意火花&#xff0c;每一款改装格瑞维亚都是对“家”的重新诠释&#xff0c;它们不仅仅是车轮上的风景&#xff0c;更是梦想与生活的完美融合。 大赛中&#xff0…

Day15--Servlet后端之Jsp了解学习(数据展示分页的实现)

JSP&#xff08;Java Server Pages&#xff09;是一种基于Java的动态网页开发技术&#xff0c;主要用于创建能够动态生成内容的Web应用程序。他可以前后端语言混合编写&#xff0c;用在编译后会变成一个类&#xff0c;你也可以理解为jsp文件就是一个servlet类&#xff0c;只是j…

2024第18届中国西部体育博览会诚邀代理招展

2024第18届中国西部体育博览会诚邀代理招展 2024第18届中国西部体育博览会诚邀全国各关联商会、协会&#xff0c;联盟、各专业会展公司、各关联产业园区、各关联网站报纸杂志及平台等资源方组团参展&#xff0c;组委会将给予最优惠的代理招展政策&#xff0c;群策群力共同把中…

pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“

参考博客&#xff1a; 1&#xff09;pycharm中配置pyqt designer和pyside2【功能是在pycharm中可以打开designer,并且可以把.ui文件转换为.py文件】 https://blog.csdn.net/kuntliu/article/details/117219237 2&#xff09;.ui转化为.py后&#xff0c;点击运行&#xff0c;报错…

C++为何难以割舍历史包袱?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c&#xff0b;&#xff0b;的资料从专业入门到高级教程」&#xff0c;点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 你以为…

Llama 3.1:Meta 的开源 AI 巨兽,智能新高度

在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLMs&#xff09;就像是会魔法的巨人&#xff0c;它们能读懂我们的心思&#xff0c;帮我们解决问题。最近&#xff0c;Meta 公司&#xff08;就是 Facebook 的母公司&#xff09;发布了一个叫做 Llama 3.1 的超级智能模…

科学碳目标的制定流程

科学碳目标&#xff08;Science-Based Target&#xff0c;简称SBT&#xff09;的制定流程是一个系统而严谨的过程&#xff0c;旨在确保企业或组织设定的温室气体减排目标与气候科学的最新研究成果和《巴黎协定》的目标相一致。以下是科学碳目标制定流程的主要步骤&#xff1a; …