zoukankan      html  css  js  c++  java
  • JavaScript——操作BOM对象(重点)

    1.1、浏览器介绍

    JavaScript 和 浏览器关系?

    JavaScript 诞生就是为了能够让他在浏览器中运行!

    BOM : 浏览器对象模型

    • IE 6~11:国内用得最多的IE浏览器,历来对W3C标准支持差。从IE10开始支持ES6标准;
    • Chrome:Google出品的基于Webkit内核浏览器,内置了非常强悍的JavaScript引擎——V8。由于Chrome一经安装就时刻保持自升级,所以不用管它的版本,最新版早就支持ES6了;
    • Safari:Apple的Mac系统自带的基于Webkit内核的浏览器,从OS X 10.7 Lion自带的6.1版本开始支持ES6,目前最新的OS X 10.11 El Capitan自带的Safari版本是9.x,早已支持ES6;
    • FireFox :Mozilla自己研制的Gecko内核和JavaScript引擎OdinMonkey。早期的Firefox按版本发布,后来终于聪明地学习Chrome的做法进行自升级,时刻保持最新;
    • 移动设备上目前iOS和Android两大阵营分别主要使用Apple的Safari和Google的Chrome,由于两者都是Webkit核心,结果HTML5首先在手机上全面普及(桌面绝对是Microsoft拖了后腿),对JavaScript的标准支持也很好,最新版本均支持ES6。

    第三方浏览器

    • QQ浏览器
    • 360浏览器
    • ......

    1.2、window (重要)

    window对象不但充当全局作用域,而且表示浏览器窗口。

    //获取浏览器属性
    window.alert(1)
    undefined
    window.innerHeight
    258
    window.innerWidth
    919
    window.outerHeight
    994
    window.outerWidth
    919
    

    1.3、Navigator (不建议使用)

    Navigator ,封装了浏览器的信息

    navigator.appName   //浏览器名称
    "Netscape"
    navigator.appVersion //浏览器版本
    "5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
    navigator.userAgent //浏览器设定的user-Agent字符串
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
    navigator.platform   //操作系统类型
    "Win32"
    navigator.language  //浏览器设置的语言
    "zh-CN"
    

    大多数时候,我们不会使用 navigator 对象,因为会被人为修改!

    1.4、screen

    代表屏幕的信息

    screen.width    //屏幕宽度,以像素为单位;
    screen.height   //屏幕高度,以像素为单位;
    screen.colorDepth //返回颜色位数
    

    1.5、location (重要)

    location 代表当前页面的URL信息,例如,一个完整的URL:

    http://www.example.com:8080/path/index.html?a=1&b=2#TOP
    

    可以用location.href获取。要获得URL各个部分的值,可以这么写:

    location.protocol; // 'http'
    location.host; // 'www.example.com'
    location.port; // '8080'
    location.pathname; // '/path/index.html'
    location.search; // '?a=1&b=2'
    location.hash; // 'TOP'
    

    要加载一个新页面,可以调用location.assign()。如果要重新加载当前页面,调用location.reload()方法非常方便。

    if (confirm('重新加载当前页' + location.href + '?')) {
        location.reload();
    } else {
        location.assign('/'); // 设置一个新的URL地址
    }
    

    1.6、document (文档)

    document 代表当前的页面,由于HTML在浏览器中以DOM形式表示为树形结构,document对象就是整个DOM树的根节点。

    1、title

    //document的title属性是从HTML文档中的<title>xxx</title>读取的,但是可以动态改变:
    document.title = "百度一下,你就知道"
    

    2、获取具体的文档树节点

    <dl id="app">
        <dt>Java</dt>
        <dd>JavaSE</dd>
        <dd>JavaEE</dd>
    </dl>
    
    <script>
        var dl = document.getElementById('app');
        console.log(dl)
        //
    </script>=
    

    效果:

    Cookie是由服务器发送的key-value标示符。因为HTTP协议是无状态的,但是服务器要区分到底是哪个用户发过来的请求,就可以用Cookie来区分。当一个用户成功登录后,服务器发送一个Cookie给浏览器,例如user=ABC123XYZ(加密的字符串)...,此后,浏览器访问该网站时,会在请求头附上这个Cookie,服务器根据Cookie即可区分出用户。

    Cookie还可以存储网站的一些设置,例如,页面显示的语言等等。

    JavaScript可以通过document.cookie读取到当前页面的Cookie:

    document.cookie
    "__guid=111872281.88375976493059340.1578110638877.133; monitor_count=1"
    

    由于JavaScript能读取到页面的Cookie,而用户的登录信息通常也存在Cookie中,这就造成了巨大的安全隐患,这是因为在HTML页面中引入第三方的JavaScript代码是允许的:

    www.taobao.com

    <script src="aa.js"></script>
    <!--恶意人员;获取你的cookie上传到他的服务器 -->
    

    为了解决这个问题,服务器在设置Cookie时可以使用httpOnly,设定了httpOnly的Cookie将不能被JavaScript读取。这个行为由浏览器实现,主流浏览器均支持httpOnly选项,IE从IE6 SP1开始支持。

    为了确保安全,服务器端在设置Cookie时,应该始终坚持使用httpOnly

    1.7、history (不建议使用)

    history 代表浏览器的历史记录,JavaScript可以调用history对象的back()forward (),相当于用户点击了浏览器的“后退”或“前进”按钮。

    history.back() //后退
    history.forward() //前进
    
  • 相关阅读:
    es6学习笔记--let和const
    最新数组方法(包括es6)
    es6学习笔记--模板字符串
    版本控制工具--svn和git的使用(三) -----git的使用(2)
    版本控制工具--svn和git的使用(三) -----git的使用(1)
    版本控制工具--svn和git的使用(二) -----SVN的操作
    版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类
    e.preventDefault()和e.stopPropagation()以及return false的作用和区别
    Mybatis之SessionFactory原理
    Mybatis架构简介
  • 原文地址:https://www.cnblogs.com/godles/p/12197677.html
Copyright © 2011-2022 走看看