document

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

    document title 属性是从HTML文档中的 <title>xxx</title> 读取的,但是可以动态改变:

    'use strict';



    document.title = '努力学习JavaScript!';

    请观察浏览器窗口标题的变化。

    要查找DOM树的某个节点,需要从 document 对象开始查找。最常用的查找是根据ID和Tag Name。

    我们先准备HTML数据:

    <dl id="drink-menu" style="border:solid 1px #ccc;padding:6px;">

    <dt>摩卡</dt>

    <dd>热摩卡咖啡</dd>

    <dt>酸奶</dt>

    <dd>北京老酸奶</dd>

    <dt>果汁</dt>

    <dd>鲜榨苹果汁</dd>

    </dl>

    document 对象提供的 getElementById() getElementsByTagName() 可以按ID获得一个DOM节点和按Tag名称获得一组DOM节点:

    'use strict';



    var menu = document.getElementById('drink-menu');

    var drinks = document.getElementsByTagName('dt');

    var i, s, menu, drinks;



    menu = document.getElementById('drink-menu');

    menu.tagName; // 'DL'



    drinks = document.getElementsByTagName('dt');

    s = '提供的饮料有:';

    for (i=0; i<drinks.length; i++) {

    s = s + drinks[i].innerHTML + ',';

    }

    alert(s);

    document 对象还有一个 cookie 属性,可以获取当前页面的Cookie。

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

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

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

    document.cookie; // 'v=123; remember=true; prefer=zh'

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

    <!— 当前页面在wwwexample.com —>

    <html>

    <head>

    <script src="http://www.foo.com/jquery.js"></script&gt;

    </head>



    </html>

    如果引入的第三方的JavaScript中存在恶意代码,则 www.foo.com 网站将直接获取到 www.example.com 网站的用户登录信息。

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

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