浏览器对象模型 (BOM)

浏览器对象模型 (BOM)

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

 Window 尺寸

  有三种方法能够确定浏览器窗口的尺寸。

  对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

    window.innerHeight - 浏览器窗口的内部高度(包括滚动条)

    window.innerWidth - 浏览器窗口的内部宽度(包括滚动条)

  对于 Internet Explorer 8、7、6、5:

    document.documentElement.clientHeight

    document.documentElement.clientWidth

  或者

    document.body.clientHeight

    document.body.clientWidth

 其他 Window 方法

  window.open() - 打开新窗口

  window.close() - 关闭当前窗口

  window.moveTo() - 移动当前窗口

  window.resizeTo() - 调整当前窗口的尺寸

 Window Screen

  window.screen对象在编写时可以不带上 window 这个前缀。

   screen.availWidth - 可用的屏幕宽度   属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如窗口任务栏。

   screen.availHeight - 可用的屏幕高度  该属性返回访问者屏幕的高度,以像素计,减去界面特性,比如窗口任务栏。

 Window Location

   window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。 对象在编写时可不使用 window 这个前缀,如:

    location.hostname 返回 web 主机的域名

    location.pathname 返回当前页面的路径和文件名

    location.port 返回 web 主机的端口 (80 或 443)

    location.protocol 返回所使用的 web 协议(http:// 或 https://)

 Window Location Href

  location.href 属性返回当前页面的 URL。  

 Window Location Assign

  location.assign() 方法加载新的文档。

  如:box2.innerHTML = window.location.assign('http://www.guiyinqingyuan.com');

 Window History

  window.history 对象包含浏览器的历史。 该对象在编写时可不使用 window 这个前缀。

   history.back() - 与在浏览器点击后退按钮相同  history.back() 方法加载历史列表中的前一个 URL。

   history.forward() - 与在浏览器中点击向前按钮相同  history forward() 方法加载历史列表中的下一个 URL。

  附:除了history.back()history.forward() 还可以通过 history.go() 来实现前进和后退  

    //前进
    function lia(){
      history.go(1);   // go() 里面的参数表示跳转页面的个数 例如 history.go(1) 表示前进一个页面
    }

    //后退
    function hua(){
      history.go(-1);   // go() 里面的参数表示跳转页面的个数 例如 history.go(-1) 表示后退一个页面
    }

  Window Navigator (navigator 对象的信息具有误导性,不应该被用于检测浏览器版本

    window.navigator 对象包含有关访问者浏览器的信息。 该对象在编写时可不使用 window 这个前缀。

    <div id="example"></div>
    <script>
      txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";
      txt+= "<p>浏览器名称: " + navigator.appName + "</p>";
      txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";
      txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";
      txt+= "<p>硬件平台: " + navigator.platform + "</p>";
      txt+= "<p>用户代理: " + navigator.userAgent + "</p>";
      txt+= "<p>用户代理语言: " + navigator.systemLanguage + "</p>";
      document.getElementById("example").innerHTML=txt;
    </script>

  注意:navigator 对象的信息具有误导性,navigator 数据可被浏览器使用者更改,一些浏览器对测试站点会识别错误,浏览器无法报告晚于浏览器发布的新操作系统

JavaScript 弹窗

  可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。

  警告框  window.alert() 方法可以不带上window对象,直接使用alert()方法。

  确认框  window.confirm() 方法可以不带上window对象,直接使用confirm()方法。

  提示框  window.prompt() 方法可以不带上window对象,直接使用prompt()方法。

JavaScript 计时事件  

  javaScript 通过设定一个时间间隔之后来执行代码,我们称之为计时事件

  在 JavaScritp 中使用计时事件的两个关键方法是:

    setInterval() - 间隔指定的毫秒数不停地执行指定的代码。

    setTimeout() - 在指定的毫秒数后执行指定代码。

  注意: setInterval() 和 setTimeout() 是 HTML DOM Window 对象的两个方法。

  setInterval() 方法

    setInterval() 间隔指定的毫秒数不停地执行指定的代码

    window.setInterval() 方法可以不使用window前缀,直接使用函数setInterval()。    

    setInterval() 第一个参数是函数(function),第二个参数间隔的毫秒数, 1000 毫秒是一秒。

  clearInterval() 方法  用于停止 setInterval() 方法执行的函数代码。

    window.clearInterval() 方法可以不使用window前缀,直接使用函数clearInterval()

    要使用 clearInterval() 方法, 在创建计时方法时你必须使用全局变量:

    // clearInterval点击停止
    var hua = setInterval(function(){tu()}, 1000);
    function tu(){
      box.innerHTML = new Date().toLocaleTimeString();
    }
    btn1.onclick = function(){
      clearInterval(hua);
    }

 setTimeout() 方法

  setTimeout()的使用方法和setInterval() 方法差不多,区别在于setTimeout()使用一次之后就失效了,setInterval() 方法则是一直循环使用  

  // setTimeout() 方法执行一次后失效
   var hermit = setTimeout(function(){lxlx()}, 5000);
   function lxlx(){
     box1.innerHTML = new Date().toLocaleTimeString() + '如果你在5秒之内没有点击阻止,我才能显示';
   }

 clearTimeout() 方法

  clearTimeout() 方法用于停止执行setTimeout()方法的函数代码。但是必须在setTimeout()方法执行之前点击,因为setTimeout()方法执行一次,之后就自动失效了  

  var hermit = setTimeout(function(){lxlx()}, 5000);
  function lxlx(){
    box1.innerHTML = new Date().toLocaleTimeString() + '如果你在5秒之内没有点击阻止,我才能显示';
  }
  btn2.onclick = function(){
    clearTimeout(hermit);
  }

 JavaScript Cookie

   Cookie 用于存储 web 页面的用户信息,Cookie 是一些数据, 存储于你电脑上的文本文件中。

   当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。

   Cookie 的作用就是用于解决 "如何记录客户端的用户信息": 当用户访问 web 页面时,他的名字可以记录在 cookie 中。在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。

   Cookie 以名/值对形式存储,如username = John Doe

   当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息。

 使用 JavaScript 创建Cookie

  Cookie 用于存储 web 页面的用户信息。Cookie 是一些数据, 存储于你电脑上的文本文件中。

  当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。Cookie 的作用就是用于解决 "如何记录客户端的用户信息"

  当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息。

  JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。

    创建 cookie,如:document.cookie="username=John Doe";

   还可以为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)。默认情况下,cookie 在浏览器关闭时删除

    document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";

  您可以使用 path 参数告诉浏览器 cookie 的路径。默认情况下,cookie 属于当前页面。

    document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

   读取 cookie,如: var x = document.cookie;  document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1=value; cookie2=value; cookie3=value;

   修改 cookie,如:document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";   修改 cookie 类似于创建 cookie,旧的 cookie 覆盖。

   删除 cookie,如:document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";   删除 cookie 非常简单。您只需要设置 expires 参数为以前的时间即可,删除时不必指定 cookie 的值。

 Cookie 字符串

  如果您设置了新的 cookie,旧的 cookie 不会被覆盖。 新 cookie 将添加到 document.cookie 中,所以如果您重新读取document.cookie,那么数据是这样的:cookie1=value; cookie2=value;

  // 设置cookie值
  // cookie的名称为cname,值为cvalue,过期时间为exdays
  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;
  }

  //获取cookie值
  // cookie的名称为cname
  // 创建一个文本变量用于检索指定 cookie :cname + "="
  function getCookie(cname){
    var name = cname + '=';
    //使用分号来分割document.cookie字符串,
    // 并将分割后的字符串数组赋值给 ca
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++){ //循环 ca 数组
      var c = ca[i].trim(); //去除前后空格
      if(c.indexOf(name)==0){
        return c.substring(name.length, c.length);
      }
    }
    return '';//如果没有找到 cookie, 返回 "" (空字符串)
  }

  //检测cookie的值
  btn1.onclick = function(){
    var username = getCookie('username');
    if(username != ''){
      alert('Welcome again' + username);
    }else{
      username = prompt('Please enter your name:', '');
      if(username != '' && username != null){
        setCookie('username', username,365);
      }
    }
  }

原文地址:https://www.cnblogs.com/hermit-gyqy/p/10690873.html