Javascript学习08-BOM

  • BOM,Browser Object Model,浏览器对象模型。
    • BOM主要提供了访问和操作浏览器各组件的方式。
    • 浏览器组件:
      • window(浏览器窗口)
      • location(地址栏)
      • history(浏览历史)
      • screen(显示器屏幕)
      • navigator(浏览器软件)
      • document(网页)
  • DOM,Document Object Model,文档对象模型。
    • DOM主要提供了访问和操作HTML标记的方式。
    • HTML标记:
      • 图片标记
      • 表格标记
      • 表单标记
      • body、html标记
      • .......
  • BOM和DOM不是JS的内容。它们是W3C制定的规范。但是,BOM和DOM在浏览器中以对象的形式得以实现。
  • 换句话说:BOM和DOM都是由一组对象构成。
    • W3C是制作互联网标准的一个国际化的组织,如:XHTML、CSS、Javascript、AJAX等。
  • BOM对象结构图

    • 各对象之间是有层级关系的,各对象之间如何访问?
      • window.document.write("ok")
      • window.document.body.bgColor="#FF0000";
    • window对象是所有其他对象的最顶层对象,因此,可以省略。
      • document.write("OK");
      • document.body.bgColor = "#ff0000";
      • window.alert("OK");    ——>  alert("OK");
      • window.prompt("请输入一个分数");  ——>   prompt("请输入一个分数");
  • window对象的属性
      //循环遍历window对象的所有属性
        /*
            for(name|index in obj|arr){
            }
            描述:智能循环数组的下标,或对象的属性。
            说明:如果循环数组的话,每次循环将取下标值;
                  对于数组中值为undefined的,不会循环;
                  循环数组,只返回有效的值。
                  如果循环对象的话,每次循环取对象属性。
                  严格的来说,对象中没有方法一说,所有的都是属性
                  将一个函数给一个属性后,这个属性就变成方法了。
    
        */
        var i = 1;   
        for(var name in document)
        {
            document.write(i+"、"+name+"<br/>");
            i++;
        }   <span style="font-size: 21px;"><strong><span style="font-size: 21px;"></span></strong></span>
    • name:指浏览器窗口的名字或框架的名字。这个名字是给<a>标记的target属性来使用的。
      • 设置窗口的名字:window.name = "newWin";
      • 获取窗口的名字:document.write(name);
    • top:代表最顶层窗口。如:window.top
    • parent:代表父级窗口,主要用户框架。
    • self:代表当前窗口,主要用于框架内。
    • innerWidth:指浏览器窗口的内宽(不含菜单栏、工具栏、地址栏、状态栏),该属性Firefox支持。
      • 在IE下,使用document.documentElement.clientWidth来代替window.innerWidth
    • innerHeight:指浏览器窗口的内高(不含菜单栏、工具栏、地址栏、状态栏),该属性Firefox支持。
      • 在IE下,使用document.documentElement.clientHeight来代替window.innerHeight
      • document.documentElement.clientHeight 就是<html>标记对象。
      • document.body  就是<body>标记对象
            // 实例,测试当前网页的宽度和高度
            var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth;
            var height = window.innerHeight ? window.innerHeight : document.documentElement.clienHeigth;
            // 输出结果
            document.write("宽度"+width+":高度"+height)
  • window对象方法
    • alert():弹出一个警告对话框。
    • prompt():弹出一个输入对话框。
    • close():关闭窗口。
    • confirm():弹出一个确认对话框。如果单击“确定按钮”返回true,单击“取消”,返回false。
        <script type="text/javascript">
          function confirmDel()
          {
              if(window.confirm("你确认要删除么?"))
              {
                  // 跳转到PHP的删除页面delete.php执行删除操作
                  location.href="delete.php";
              }
          }
          </script>
      </head>
      <body>
      <table width="800" border="1" align="center" rules="all" cellpadding="3">
          <tr>
              <th>新闻ID</th>
              <th>新闻标题</th>
              <th>发布日期</th>
              <th>操作选项</th>
          </tr>
          <tr>
              <td>10010</td>
              <td>增日强:商业银行法修正草案删除75%存贷比规定</td>
              <td>2015-03-12</td>
              <td><a href="#">修改</a> <a href="#" οnclick="confirmDel()">删除</a></td>
          </tr>
          <tr>
              <td>10020</td>
              <td>增日强:商业银行法修正草案删除75%存贷比规定</td>
              <td>2015-03-14</td>
              <td><a href="#">修改</a> <a href="#" οnclick="confirmDel()">删除</a></td>
          </tr>
          <tr>
              <td>10030</td>
              <td>增日强:商业银行法修正草案删除75%存贷比规定</td>
              <td>2015-03-15</td>
              <td><a href="#">修改</a> <a href="#" οnclick="confirmDel()">删除</a></td>
          </tr>
      </body>

    • print():打印窗口
  • open():方法
    • 功能:打开一个新的浏览器窗口。
    • 语法:var winObj = window.open([url],[name],[options]);
    • 说明:参数可有可无。如果没有指定参数,则打开一个选项卡式的窗口(大小是最大大化)。
    • 参数:
      • url:准备在新窗口中显示哪个文件。url可以为空字符串,表示显示一个空的页面。
      • name:新窗口的名字,改名字给<a>标记的target属性来用。
      • options:新窗口的规格。
        • width:新窗口的宽度。
        • height:新窗口的高度。
        • left:新窗口距离屏幕左边的距离。
        • top:新窗口距离屏幕上边的距离。
        • menubar:是否显示菜单栏,取值:yes、no
        • toolbar:是否显示工具栏,取值同上。
        • status:是否显示状态栏。
      • 返回值:返回一个window对象的变量,可以通过该名称跟踪该窗口。winObj具备window对象的所有属性和方法。
  • onload事件:当网页加载完成,指<body>标记的所有内容全部加载完成,才触发该事件(条件)。通过该onload事件属性去调用JS的函数。
  • onclick事件:当单击时,去调用JS代码。所有html标记都具有该事件属性。
实例:
    function init()
    {
        // 变量初始化
        var screenWidth = screen.availWidth;     //屏幕的有效宽度
        var screenHeight = screen.availHeight; //屏幕的有效高度
        var width = 600;    //新窗口的宽度
        var height = 400;    //新窗口的高度
        var x = (screenWidth-width)/2;
        var y = (screenHeight-height)/2;
        var url2 = "";
        var name2 = "win2";
        var options2 = "width="+width+",height="+height+",left="+x+",top="+y+",menubar=no,toolbar=no";
        // 打开一个新窗口
        var winObj = window.open(url2,name2,options2); 
        // 往新窗口中,输入一个字符串。
        winObj.document.write("这是新窗口中的内容");
        // 10秒钟后,自动关闭
        winObj.setTimeout("window.close()",10000);
    }

    window.onload = init;    //是将函数的地址传给了事件,而不是将函数的执行结果传给事件。
                                                //有名函数或普通函数,作为地址引用,不能带括号。
    function init(){
        // 更改网页背景色
    window.document.body.bgColor = "#098943";
        //变量初始化
    <script type="text/javascript">
    function init(){
    window.document.body.bgColor = "#098943";
    var url2 = "";
    var name2 = "win2";
    var options2 = "width=400,height=300,left=300,top=200,scrollbars=yes"
    var winObj = window.open("url2","name2","options2");
    // 往新窗口中输入内容
    var str = "<h2>张三的基本信息</h2>";
    str += "姓名:张三";
    str += "<br>性别:男";
    str += "<br>年龄:30岁"
    winObj.document.write(str);
    // 5秒后,新窗口自动关闭
    winObj.setTimeout("window.close()",2000)
    }
    </script>
</head>
<body οnlοad="init()">
    <a href="10.6.1二维数组.html" target="win2">公司新闻</a>
</body>
  • 延时器————setTimeout()
    • setTimeout()
      • 功能:设置一个延时器。换句话说:时间一到,就执行JS代码一次。
      • 语法:var timer = window.setTimeout(code,millisec)
      • 参数:
        • code:是i任何合法的JS代码,一般情况下是JS函数。该函数要放在引号中。
          • 举例:window.setTimeout("close()".2000);
          • 举例:window.setTimeout(init,2000);   //传函数地址,因此不需要加括号。如果加括号,是将函数的执行结果传到方法中。
        • millisec:毫秒值。1秒=1000毫秒
      • 返回值:返回一个延时器的id变量,这个id变量给clearTimeout()用来清除。
    • clearTimeout()
      • 功能:清除延时器id变量
      • 语法:window.clearTimeout(timer)
      • 参数:timer就是由setTimeout()设置的延时器变量
  • 计数器
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>简单计数器</title>
        <script type="text/javascript">
        // 实例:简单计数器
        var i = 0;
        var timer;
        function start2()
        {
            // 获取网页中id=result的<input>元素
            var inputObj = document.getElementById("result");
            // <input>标记有什么属性,那么,对应的元素对象就有什么属性。
            inputObj.value = "改程序已经运行了"+i+"秒!";
            i++;
            // 延时器
            // 延时器要想实现重复执行,必须在函数中不断调用自己。
            // 这么实现以后,延时器就可以模拟定时器的效果。
            timer = window.setTimeout("start2()",1000);
        }   
        function stop2()
        {
            window.clearTimeout(timer);
        }
        </script>
    </head>
    <body>
        <input id="result" type="button" value="改程序已经运行了0秒!" /><br />
        <input type="button" value="开始" οnclick="start2()" />
        <input type="button" value="结束" οnclick="stop2()" />
    </body>
    </html><strong><span style="font-size: 19px;"></span></strong>
  • 定时器方法
    • setInterval()
      • 功能:设置一个定时器。定时器,重复不断的执行JS代码(周期性)
      • 语法:var timer = window.setInterval(code,millisec)
      • 参数:
        • code:是任何合法的JS代码,一般情况下是JS函数。该函数主要放在引号中。
          • 举例:window.setInterval("close()".2000);
          • 举例:window.setInerval(init,2000);  //传函数地址,因此不需要加括号。如果加括号,是将函数的执行结果传到方法中。
        • millisec:毫秒值。1秒=1000毫秒
      • 返回值:返回一个定时器的id变量,这个id变量给clearInterval()来清除。
    • clearInterval()
      • 功能:清除延时器id变量
      • 语法:window.clearInterval(timer)
      • 参数:timer就是由setInterval()设置的延时器变量。
    • 实例:自动切换图片
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>图片自动切换</title>
          <script type="text/javascript">
          // 网页加载完成,去调用JS函数
          window.onload = init;    //函数传地址,不能带括号
          // 定义函数
          function init()
          {
              // 定时器:每隔1秒,调start2()函数一次
              // 定时器总是调用其它函数,而延时器总是调用自己所在的函数
              window.setInterval("start2()",2000);
          }
          var i = 1;
          function start2()
          {
              // 获取网页中id=img01的图片元素对象
              var imgObj = document.getElementById("img01");
              // 图片对象有src属性,那么imgObj对象也有src属性
              imgObj.src = "images/dd_scroll_"+i+".jpg";
              i++;
              // 如果超过6,则i=1
              if(i > 6)
              {
                  i = 1;
              }
      
          }
          </script>
      </head>
      <body>
          <img id="img01"src="images/dd_scroll_1.jpg" />
      </body>
      </html>
  • screen屏幕对象
    • width:屏幕宽度,只读属性。
    • height:屏幕高度,只读属性。
    • availWidth:屏幕有效宽度,不含任务栏。只读属性。
    • availHeight:屏幕有效高度,不含任务栏。只读属性。
          <script type="text/javascript">
              // 实例:获取自己屏幕的分辨率
              var str = "<h2>屏幕的尺寸</h2>";
              str += "宽度:"+screen.width+",高度:"+screen.height;
              str += "<br>有效宽度:"+screen.availWidth+",有效高度:"+screen.availHeight;
              document.write(str);
          </script>

  • navigator对象
    • appName:浏览器软件名称,主要用来判断客户使用的是什么核心的浏览器。
      • 如果是IE浏览器,返回值为:Microsoft Internet Explorer
      • 如果是火狐浏览器,返回值为:Netscape
    • appVersion:浏览器软件的核心版本号。
    • systemLanguage:系统语言
    • userLanguage:用户语言
    • platform:平台
       <script type="text/javascript">
              // 实例:测试不同浏览器
              var str = "<h2>浏览器的相关信息</h2>";
              str += "软件名称:"+navigator.appName;
              str += "<br>核心版本:"+navigator.appVersion;
              str += "<br>系统语言:"+navigator.systemLanguage;
              str += "<br>用户语言:"+navigator.userLanguage;
              str += "<br>用户平台:"+navigator.platform;
              document.write(str+"<hr>");
              var width;
              var height;
              if(navigator.appName=="Natscape")
              {
                  width = window.innerWidth;
                  height = window.innerHeight;
              }else {
                  width = document.documentElement.clientWidth;
                  height = document.documentElement.clientHeight;
              }
              document.write("浏览器内宽:"+width+",浏览器内高:"+height)
          </script>
  • location地址栏对象
    • href:获取地址栏中完整的地址,可以实现JS的网页跳转。
      • location.href="http://www.sina.com.cn";
    • host:获取地址栏中的主机名
    • hosrname:主机名
    • pathname:文件路径及文件名
    • search:查询字符串。

    • protocol:协议,如:http://、ftp://
    • hash:锚点名称。如:#top
    • reload([true]):刷新网页。true参数表示强制刷新。
    • 注意:所有的属性,重新赋值后,网页将自动刷新。
  • history对象
    • length:历史记录的个数。
    • go(n):同时可以实现“前进”和“后退”。
    • forward():相当于浏览器的“前进”按钮
    • back():相当于浏览器的“后退”按钮








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值