• BOM 相关知识总结


    一:介绍BOM

     1     1.什么是BOM?
     2     DOM就是一套操作HTML标签的API(接口/方法/属性)
     3     BOM就是一套操作浏览器的API(接口/方法/属性)
     4 
     5     2.BOM中常见的对象
     6     window: 代表整个浏览器窗口
     7     注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局)
     8     Navigator: 代表当前浏览器的信息, 通过Navigator我们就能判断用户当前是什么浏览器
     9     Location:  代表浏览器地址栏的信息, 通过Location我们就能设置或者获取当前地址信息
    10     History:   代表浏览器的历史信息, 通过History来实现刷新/上一步/下一步
    11     注意点: 出于隐私考虑, 我们并不能拿到用户所有的历史记录, 只能拿到当前的历史记录
    12     Screen:   代表用户的屏幕信息

    二:Navigator

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8 <script>
     9     // Navigator: 代表当前浏览器的信息, 通过Navigator我们就能判断用户当前是什么浏览器
    10     // console.log(window.navigator);
    11     var agent = window.navigator.userAgent;
    12     if(/chrome/i.test(agent)){
    13         alert("当前是谷歌浏览器");
    14     }else if(/firefox/i.test(agent)){
    15         alert("当前是火狐浏览器");
    16     }else if(/msie/i.test(agent)){
    17         alert("当前是低级IE浏览器");
    18     }else if("ActiveXObject" in window){
    19         alert("当前是高级IE浏览器");
    20     }
    21 </script>
    22 </body>
    23 </html>

    三:Loaction

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8 <button id="btn1">获取</button>
     9 <button id="btn2">设置</button>
    10 <button id="btn3">刷新</button>
    11 <button id="btn4">强制刷新</button>
    12 <script>
    13     // Location:  代表浏览器地址栏的信息, 通过Location我们就能设置或者获取当前地址信息
    14     let oBtn1 = document.querySelector("#btn1");
    15     let oBtn2 = document.querySelector("#btn2");
    16     let oBtn3 = document.querySelector("#btn3");
    17     let oBtn4 = document.querySelector("#btn4");
    18     // 获取当前地址栏的地址
    19     oBtn1.onclick = function(){
    20         console.log(window.location.href);
    21     }
    22     // 设置当前地址栏的地址
    23     oBtn2.onclick = function(){
    24         window.location.href = "http://www.baidu.com";
    25     }
    26     // 重新加载界面
    27     oBtn3.onclick = function(){
    28         window.location.reload();
    29     }
    30     oBtn4.onclick = function(){
    31         window.location.reload(true);
    32     }
    33 </script>
    34 </body>
    35 </html>

    四:History

        History:   代表浏览器的历史信息, 通过History来实现刷新/前进/后退
        注意点: 出于隐私考虑, 我们并不能拿到用户所有的历史记录, 只能拿到当前的历史记录
    
        /*
        注意点:
        只有当前访问过其它的界面, 才能通过forward/go方法前进
        如果给go方法传递1, 就代表前进1个界面, 传递2就代表进行2个界面
        */
    
          window.history.forward();
          window.history.go(1);

         History:   代表浏览器的历史信息, 通过History来实现刷新/上一步/下一步
        
       
          /*
         注意点:
          只有当前访问过其它的界面, back/go方法后退
           如果给go方法传递-1, 就代表后退1个界面, 传递-2就代表后退2个界面
          */
      
      
            // window.history.back();
            window.history.go(-1);
     
    
    

    五:获取元素宽高其它方式1

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title></title>
      6     <style>
      7         *{
      8             margin: 0;
      9             padding: 0;
     10         }
     11         div{
     12             width: 100px;
     13             height: 100px;
     14             padding: 50px;
     15             border: 50px solid #000;
     16             background: red;
     17             background-clip: content-box;
     18         }
     19     </style>
     20 </head>
     21 <body>
     22 <div id="box"></div>
     23 <script>
     24     /*
     25     1.通过getComputedStyle获取宽高
     26     1.1获取的宽高不包括 边框和内边距
     27     1.2即可以获取行内设置的宽高也可以获取CSS设置的宽高
     28     1.3只支持获取, 不支持设置
     29     1.4只支持IE9及以上浏览器
     30     */
     31     /*
     32     var oDiv = document.getElementById("box");
     33     // oDiv.style.width = "166px";
     34     // oDiv.style.height = "166px";
     35     var style = getComputedStyle(oDiv);
     36     // style.width = "166px";
     37     // style.height = "166px";
     38     console.log(style.width);
     39     console.log(style.height);
     40     */
     41 
     42     /*
     43     2.通过currentStyle属性获取宽高
     44     2.1获取的宽高不包括 边框和内边距
     45     2.2即可以获取行内设置的宽高也可以获取CSS设置的宽高
     46     2.3只支持获取, 不支持设置
     47     2.4只支持IE9以下浏览器
     48     */
     49     /*
     50     var oDiv = document.getElementById("box");
     51     // oDiv.style.width = "166px";
     52     // oDiv.style.height = "166px";
     53     var style = oDiv.currentStyle;
     54     style.width = "166px";
     55     style.height = "166px";
     56     // console.log(style);
     57     console.log(style.width);
     58     console.log(style.height);
     59     */
     60 
     61     /*
     62     3.通过style属性获取宽高
     63     3.1获取的宽高不包括 边框和内边距
     64     3.2只能获取内设置的宽高, 不能获取CSS设置的宽高
     65     3.3可以获取也可以设置
     66     3.4高级低级浏览器都支持
     67     */
     68     /*
     69     var oDiv = document.getElementById("box");
     70     oDiv.style.width = "166px";
     71     oDiv.style.height = "166px";
     72     console.log(oDiv.style.width);
     73     console.log(oDiv.style.height);
     74     */
     75 
     76     /*
     77     4.offsetWidth和offsetHeight
     78     4.1获取的宽高包含 边框 + 内边距 + 元素宽高
     79     4.2即可以获取行内设置的宽高也可以获取CSS设置的宽高
     80     4.3只支持获取, 不支持设置
     81     4.4高级低级浏览器都支持
     82     */
     83     /*
     84     var oDiv = document.getElementById("box");
     85     // oDiv.offsetWidth = "166px";
     86     // oDiv.offsetHeight = "166px";
     87     oDiv.style.width = "166px";
     88     oDiv.style.height = "166px";
     89     console.log(oDiv.offsetWidth);
     90     console.log(oDiv.offsetHeight);
     91     */
     92 
     93     /*
     94     1.getComputedStyle/currentStyle/style
     95     获取的宽高不包括 边框和内边距
     96     2.offsetWidth/offsetHeight
     97     获取的宽高包括 边框和内边距
     98 
     99     3.getComputedStyle/currentStyle/offsetXXX
    100     只支持获取, 不支持设置
    101     4.style
    102     可以获取, 也可以设置
    103 
    104     5.getComputedStyle/currentStyle/offsetXXX
    105     即可以获取行内,也可以获取外链和内联样式
    106     6.style
    107     只能获取行内样式
    108     */
    109 </script>
    110 </body>
    111 </html>

    六:获取元素位置之offset属性

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         .father{
    12             width: 200px;
    13             height: 200px;
    14             margin-top: 100px;
    15             margin-left: 100px;
    16             background: blue;
    17             overflow: hidden;
    18             position: relative;
    19         }
    20         .son{
    21             width: 100px;
    22             height: 100px;
    23             margin-top: 100px;
    24             margin-left: 100px;
    25             background: red;
    26         }
    27     </style>
    28 </head>
    29 <body>
    30 <div class="father">
    31     <div class="son"></div>
    32 </div>
    33 <script>
    34     /*
    35     1.offsetLeft和offsetTop作用
    36     获取元素到第一个定位祖先元素之间的偏移位
    37     如果没有祖先元素是定位的, 那么就是获取到body的偏移位
    38     */
    39     let oSDiv = document.querySelector(".son");
    40     oSDiv.onclick = function () {
    41         console.log(oSDiv.offsetLeft);
    42         console.log(oSDiv.offsetTop);
    43     }
    44 
    45 </script>
    46 </body>
    47 </html>

    七:offsetParent

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         .grand-father{
    12             width: 300px;
    13             height: 300px;
    14             margin-top: 100px;
    15             margin-left: 100px;
    16             background: deeppink;
    17             overflow: hidden;
    18             position: relative;
    19         }
    20         .father{
    21             width: 200px;
    22             height: 200px;
    23             margin-top: 100px;
    24             margin-left: 100px;
    25             background: blue;
    26             overflow: hidden;
    27             position: relative;
    28         }
    29         .son{
    30             width: 100px;
    31             height: 100px;
    32             margin-top: 100px;
    33             margin-left: 100px;
    34             background: red;
    35         }
    36     </style>
    37 </head>
    38 <body>
    39 <div class="grand-father">
    40     <div class="father">
    41         <div class="son"></div>
    42     </div>
    43 </div>
    44 <script>
    45     /*
    46     1.offsetParent作用
    47     获取元素的第一个定位祖先元素
    48     如果没有祖先元素是定位的, 那么就是获取到的就是body
    49     */
    50     let oSDiv = document.querySelector(".son");
    51     oSDiv.onclick = function () {
    52         console.log(oSDiv.offsetParent);  
    53     }
    54 </script>
    55 </body>
    56 </html>

    八:client

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         div{
    12             width: 100px;
    13             height: 100px;
    14             padding: 50px;
    15             border: 50px solid #000;
    16             background: red;
    17             /* 除去padding中间的content */
    18             background-clip: content-box; 
    19         }
    20     </style>
    21 </head>
    22 <body>
    23 <div id="box"></div>
    24 <script>
    25     /*
    26     1.offsetWidth = 宽度 + 内边距 + 边框
    27      offsetHeight = 高度 + 内边距 + 边框
    28     2.clientWidth = 宽度 + 内边距
    29      clientHeight = 高度 + 内边距
    30     */
    31     let oDiv = document.querySelector("div");
    32     console.log(oDiv.clientWidth); //200
    33     console.log(oDiv.clientHeight); //200
    34 
    35     /*
    36     1.offsetLeft/offsetTop: 距离第一个定位祖先元素偏移位 || body
    37     2.clientLeft/clientTop: 左边框 和 顶部边框
    38     */
    39     console.log(oDiv.clientLeft); //50
    40     console.log(oDiv.clientTop);  //50
    41 
    42 </script>
    43 </body>
    44 </html>

    九:scroll

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         *{
     8             margin: 0;
     9             padding: 0;
    10         }
    11         div{
    12             width: 100px;
    13             height: 100px;
    14             padding: 50px;
    15             border: 50px solid #000;
    16             background: red;
    17             background-clip: content-box;
    18             color: deepskyblue;
    19             overflow: auto;
    20         }
    21     </style>
    22 </head>
    23 <body>
    24 <div id="box">
    25     我是内容<br/>
    26     我是内容<br/>
    27     我是内容<br/>
    28     我是内容<br/>
    29     我是内容<br/>
    30     我是内容<br/>
    31     我是内容<br/>
    32     我是内容<br/>
    33     我是内容<br/>
    34     我是内容<br/>
    35     我是内容<br/>
    36     我是内容<br/>
    37     我是内容<br/>
    38     我是内容<br/>
    39 </div>
    40 <script>
    41     /*
    42     1.内容没有超出元素范围时
    43     scrollWidth: = 元素宽度 + 内边距宽度 == clientWidth
    44     scrollHeight: = 元素高度 + 内边距的高度 == clientHeight
    45     */
    46     let oDiv = document.querySelector("div");
    47     // console.log(oDiv.scrollWidth);
    48     // console.log(oDiv.scrollHeight);
    49     /*
    50     2.内容超出元素范围时
    51     scrollWidth: = 元素宽度 + 内边距宽度 + 超出的宽度
    52     scrollHeight: = 元素高度 + 内边距的高度 + 超出的高度
    53     */
    54 
    55     /*
    56     3.scrollTop / scrollLeft
    57     scrollTop: 超出元素内边距顶部的距离
    58     scrollLeft: 超出元素内边距左边的距离
    59     */
    60     // console.log(oDiv.scrollTop);
    61     oDiv.onscroll = function () {
    62         console.log(oDiv.scrollTop);
    63     }
    64 </script>
    65 </body>
    66 </html>

    十:获取网页的宽高

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title></title>
     6 </head>
     7 <body>
     8 <script>
     9     /*
    10     // 注意点: innerWidth/innerHeight只能在IE9以及IE9以上的浏览器中才能获取
    11     // console.log(window.innerWidth);
    12     // console.log(window.innerHeight);
    13 
    14     // 注意点: documentElement.clientWidth/documentElement.clientHeight
    15     // 可以用于在IE9以下的浏览器的标准模式中获取
    16     // 浏览器在渲染网页的时候有两种模式"标准模式"/"混杂模式/怪异模式"
    17     // 默认情况下都是以标准模式来进行渲染的(CSS1Compat)
    18     // 如果网页没有书写文档声明, 那么就会按照"混杂模式/怪异模式"来进行渲染的(BackCompat)
    19     // documentElement  --> HTML  --> 整个网页
    20     // console.log(document.documentElement);
    21     // console.log(document.documentElement.clientWidth);
    22     // console.log(document.documentElement.clientHeight);
    23 
    24     // 注意点: 在混杂模式中利用如下的方式获取可视区域的宽高
    25     // console.log(document.compatMode);// CSS1Compat
    26     // console.log(document.body.clientWidth);
    27     // console.log(document.body.clientHeight);
    28     */
    29 
    30     let {width, height} = getScreen();
    31     alert(width);
    32     alert(height);
    33 
    34     function getScreen() {
    35         let width, height;
    36         if(window.innerWidth){
    37             width = window.innerWidth;
    38             height = window.innerHeight;
    39         }else if(document.compatMode === "BackCompat"){
    40             width = document.body.clientWidth;
    41             height = document.body.clientHeight;
    42         }else{
    43             width = document.documentElement.clientWidth;
    44             height = document.documentElement.clientHeight;
    45         }
    46         return {
    47              width,
    48             height: height
    49         }
    50     }
    51 </script>
    52 </body>
    53 </html>
  • 相关阅读:
    Java编程思想学习笔记(八)
    Java编程思想学习笔记(七)
    Java编程思想学习笔记(六)
    Java编程思想学习笔记(五)
    Java编程思想学习笔记(三)
    Java编程思想学习笔记(二)
    整合mybatis分页插件及通用接口测试出现问题
    jsp-简单的猜数小游戏
    java-web项目:用servlet监听器实现显示在线人数
    javaweb-servlet生成简单的验证码
  • 原文地址:https://www.cnblogs.com/gsq1998/p/12247927.html
Copyright © 2020-2023  润新知