美文网首页工作生活
进阶篇:BOM(13-1)

进阶篇:BOM(13-1)

作者: 饥人谷1904_陈俊锋 | 来源:发表于2019-07-01 16:29 被阅读0次

    饥人谷进阶学习第 13 天

    BOM

    浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象哦都是该对象的子对象

    window

    BOM 的核心是window对象,它表示浏览器的一个实例。在浏览器中,即是javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象,这就意味着在网页中定义的任意变量、函数、对象都是以window作为Global对象。

    所有在全局作用域中声明的变量、函数、对象都会作为window的属性和方法

    window属性

    window.innerHeight、window.innerWidth
    两个属性返回网页的CSS布局占据的浏览器窗口的高度和宽度,单位为像素。很显然,当用户放大网页的时候(比如将网页从100%的大小放大为200%),这两个属性会变小。

    scrollX、scrollY
    滚动条横向偏移
    滚动条纵向偏移
    这两个值随着滚动位置变化而变化

    scrollTo、scrollBy、scroll
    通过方法scrollTo或者scroll改变滚动条位置到指定坐标
    window.scrollTo(0,300); // 滚动条移动到300px处

    两个参数分别是水平、垂直方向偏移

    scrollBy可以相对于当前位置移动滚动条,不是移动到绝对位置
    scrollBy(0,100); // 滚动条下移100px

    window.frames
    返回一个类似数组的对象,成员为页面内的所有框架,包括frame元素和iframe元素。window.frames的每个成员对应的是框架内的窗口(即框架的window对象),获取每个框架的DOM树,需要使用window.frames[0].document。

    var iframe = window.getElementsByTagName("iframe")[0];
    var iframe_title = iframe.contentWindow.title;
    

    用于获取框架页面的标题

    iframe元素遵守同源政策,只有当父页面与框架页面来自同一个域名,两者之间才可以用脚本通信,否则只有使用window.postMessage方法。

    在iframe框架内部,使用window.parent指向父页面。

    navigator
    Window对象的navigator属性,指向一个包含浏览器相关信息的对象。

    例如:navigator.userAgent属性返回浏览器的User-Agent字符串,用来标示浏览器的种类。但通过此属性识别浏览器不是一个好方法(必须考虑所有情况:不同浏览器,不同版本,很麻烦无法保证未来的适用性)

    现在一般不再识别浏览器了,而是使用“功能识别”方法,即逐一测试当前浏览器是否支持要用到的JavaScript功能。

    screen
    此对象包含了显示设备的信息

    screen.height // 显示设备的高度(像素)
    screen.width // 显示设备的宽度(像素)
    

    一般使用以上两个属性了解设备的分辨率。除调整显示器的分辨率,否则这两个值可以看作常量。

    window.getComputedStyle
    可以获取当前元素所有最终使用的CSS属性值。返回的是一个CSS样式声明对象([object CSSStyleDeclaration])

    var style = window.getComputedStyle("元素", "伪类");
    
    var div = document.getElementById('test');  // 没有伪类
    console.log(getComputedStyle(div).width);
    

    currentStyle
    低版本IE的实现方案,可以写个兼容的方式

    element.currentStyle ?
        element.currentStyle : window.getComputedStyle(element, null)
    

    URL的编码/解码方法

    JS提供四个URL的编码/解码方法

    1. decodeURI()
    2. decodeURIComponent()
    3. encodeURI()
    4. encodeURIComponent()

    区别
    encodeURI方法不会对下列字符编码

    1. ASCII字母
    2. 数字
    3. ~!@#$&*()=:/,;?+'
    

    encodeURIComponent方法(范围较大)不会对下列字符编码

    1. ASCII字母
    2. 数字
    3. ~!*()'
    

    实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。

    alert()、prompt()、confirm()
    浏览器用来与用户互动的方法。会弹出不同的对话框,要求用户做出回应。(不常用)
    这三个方法弹出的对话框,都是浏览器统一规定的式样,是无法定制的。

    alert方法弹出的对话框,只有一个“确定”按钮,往往用来通知用户某些信息。用户只有点击“确定”按钮,对话框才会消失。在对话框弹出期间,浏览器窗口处于冻结状态,如果不点“确定”按钮,用户什么也干不了。

    prompt方法弹出的对话框,在提示文字的下方,还有一个输入框,要求用户输入信息,并有“确定”和“取消”两个按钮。它往往用来获取用户输入的数据。返回值是一个字符串(有可能为空)或者null,具体分成三种情况。

    1. 用户输入信息,并点击“确定”,则用户输入的信息就是返回值。
    2. 用户没有输入信息,直接点击“确定”,则输入框的默认值就是返回值。
    3. 用户点击了“取消”(或者按了Escape按钮),则返回值是null。
    // 格式
    var result = prompt(text[, default]);
    
    // 实例
    var result = prompt('您的年龄?', 25)
    

    prompt方法的第二个参数是可选的,但是如果不提供的话,IE浏览器会在输入框中显示undefined。因此,最好总是提供第二个参数,作为输入框的默认值。

    confirm方法弹出的对话框,除了提示信息之外,只有“确定”和“取消”两个按钮,往往用来征询用户的意见。

    // 格式
    var result = confirm(message);
    

    confirm方法返回一个布尔值,如果用户点击“确定”,则返回true;如果用户点击“取消”,则返回false。

    相关文章

      网友评论

        本文标题:进阶篇:BOM(13-1)

        本文链接:https://www.haomeiwen.com/subject/sofncctx.html