BOM概述

BOM 概述

1. BOM(浏览器模型)

Browser Object Moder
浏览器对象模型

  • 什么是BOM ?
  • BOM 是JS 的组成之一,
    • 事项和HTML 的交互
    • BOM 中提供了非常对的对象,用于访问浏览器的
    • 功能,这些功能与任何网页内容都无关
  • BOM 的作用:
    • 将相关的元素组织包裹起来,提供给我们

BOM核心--- Window

window 实际上表示浏览器的一个实例,
在浏览器中,window实际上扮演了两个角色
它既是通过JS 去访问浏览器窗口的一个接口
又是ECMAScript 中规定的Global 对象,
可以通过window 来操作整个浏览器

============

  • 拓展:
  • Global 对象
    • 是ECMAScript 总非常特殊的一个对象,
      因为这个对象其实根本不存在。

    • 但是Global 无法通过new 创建。
      但是Global 还拥有自己的属性、方法、
      甚至还拥有全局对象

    • 一般来说 Global 都是默认在浏览器引擎
      启动时候,自动初始化完成的

===========
window 对象就是BOM 的核心对象

  • 所有的对象都是由window 对象延伸出来
  • 全局作用域
var age = 18;  //全局变量

function sayAge(){        // 全局方法
 //   console.log(this.age)  //
        console.log(window.age) ;
}
sayAge();
console.log(age);

window.sayAge();

//this 高级的时候会讲,代表

由于window 对象同时扮演者ECMAScript 的Global
对象,因此所有的全局作用域中声明的全局变量以及函数
等,全部都会变成window 对象的属性和方法

3_window窗口大小问题

  1. 针对 IE9+,Chrome,FireFox,Opera 和safari
  • 浏览器窗口的内部宽度
    window.innerWidth
  • 浏览器窗口的内部高度
    window.innerHeight
var msg="窗口的高度"+window.innerHeight+
"\n窗口的高度"+window.innerWidth;                   
  1. 针对IE6/ IE7/ IE8 /IE5
  • 支持Chrome 和 FireFox
  • 浏览器内部高度
    docment.documentElement.clientHight
  • 浏览器内部宽度
    docment.documentElement.clientWidth
  1. 兼容的版本
var w =window.innerWidth ||
document.documentElement.clientWidth;
var h = 
alert("窗口宽度"+w)

4_调整窗口大小

调整窗口大小

  • resizeTO()
    调整到指定大小

  • resizeBy()

    • 增加指定的宽度和高度(宽度和高度增加10px)
  • 在IE 8 中 还可以使用

5_打开窗口

open()

  • open(URL,name,features)
    该方法用于打开一个新窗口
    查找一个已经命名的窗口

  • 参数:

  • URL:

    • 可选参数
    • 主要声明了要在浏览器新窗口中显示文档的
    • URL。如果省略该参数或者该参数数值为空
    • 则新窗口不会显示任何文档
  • name :

    • 可选参数
    • 由多个逗号
    • 包括数字,字母,下划线
    • 声明新窗口的名称
    • 标记<a> <from>的target 属性
    • 如果指定存在窗口
    • 那么open()方法不在创建新窗口
    • 而是返回对该窗口的引用
    • 同时忽略features
  • features:

    • 可选参数
    • 声明标准浏览器特征
    • 如果省略,则新窗口具有所有浏览器
    • 标准特征
    • 如果声明特殊的特征,则按照声明执行
      备注:

=========
窗口特征

  • width/height
  • left/top
    • 默认是像素
  • toolbar
    • yes/no
    • 1/0
  • scrollbar
    • yes/no 默认是 yes
    • 1/0
  • location
    • yes/no
    • 1/0
  • status
    • yes/no
    • 1/0
  • fullscreen 是否使用全屏显示
    • yes/no
    • 1/0 默认是 no
  • menubar 是否显示菜单栏
    • yes/no
    • 1/0
  • resizable 是否可调节尺寸
    • yes/no
    • 1/0
  • titlebar 显示标题栏
    • yes/no
    • 1/0
<body>
<button onclick="openAnother()">打开新窗口</button>
<script type...>
var win;
function openAnother(){
    win = window.open("http....","","w400,h400,toolbar=no,menubar= no,left=50,top = 500");
}
//关闭当前窗口
window.close();//一般设置按钮关闭,这里设置了,打开一瞬间就关闭了。
</scrlpt>
</body>

6_定时器

window 中的定时器

  • window 对象中的...方法
  • JS 中式单线程语言,但是它允许通过设置超时数值,
  • 以及间歇时间来调用代码在特定时间执行
  • 超时。。在指定的时间后去执行某段代码
  • 周期调用时指 每隔指定多长时间....
  • 超时调用
    • window.setIimeout()
  • 周期调用
    • window.setInterval()
estTimeout(code,millisec)
  • 参数:
    • code
  • 指需要放入的函数
    • millisec
  • 执行参数1中的代码
  • 时间单位毫秒(ms)
  • 1s=1000ms
var timeoutId = window.setTimeout(go,3000);

调用函数时需要注意:

  • 传入函数的时候,函数名千万不要加括号
  • 因为这个方法不是由我们自己调用
  • 而是通过引擎去进行调用
function go{
    window.open("http://baidu.com");
}

//取消超时调用
//但是如果当前的超时调用已经执行,那么无效果

timeoutId.cancel;

上面的内容相互叠加就可以了。

定时器

<h1></h1>

var h1 = document.getElementById("time");
window.setIntervall(function){
    var msg = new Date().toLocaleString();
}

讲事件还会将

系统对话框

  • alert() 警告框
  • confirm() 提示框(对话框)
  • prompt() 提示框
var msg = prompt("请输入你的名字");

if(msg != null && msg.length > 0){
    comsole.log(msg);
}

设置判断

该方法用于清除 超时问题

window.clearTimeout(timeoutId)

8_location 对象

location 对象

  • location 对象可以称为window 的子对象,
  • 也是最有用的BOM 对象之一
  • 我们可以通过window.location 来使用它,
  • 但是一般我们都会将 window省略
  • 提供了域当前窗口加载文档有关信息
  • 导航功能
  • 应用场景:
  • 鱼鱼获取当前网页的URL,并浏览器重定向到新的界面

====

  • location 对象的常用属性
  • host 主机名称和URL端口名
  • hostname 主机名
  • href 完整的URL
  • psthname 路径部分
  • port 端口号
  • protocol 协议
  • search 查询
    协议
document.write("protocol"+location.protocol+
"<br>");

主机名

document.write("hostname"+location.hostname+
"<br>");

将好几个一块写出来

<script...>
document.write("host"+location.host+
"<br>");
document.write("post"+location.post+
"<br>");
document.write("href:"+location.href+
"<br>");
document.write("protocol"+location.protocol+
"<br>");
</script>

HBulider 边改边看模式

9_location常用方法

location 常用方法

  1. assign(url) 加载新的文档
  2. reload(reforce) 重新加载当前文档
  3. replace(newURL) 用新的文档替换当前文档
<body>
<button onclick="" ...>按钮</button>
</body>
<script...>
function openNewURL(){
    location.assign("http://www.baidu.com");
}
function reload(){
    location.reload(true)
}
</script>

reload(reforce)

  • 重新加载当前文档
  • 参数:
  • reforce
    • 可选参数
    • 一般填写 true
    • 该方法如果没有规定参数,或者填写参数为false
    • 采用HTTP 中的头if-Modifed-Since
    • 来检测服务器上文档是否发生改变
    • 如果文档已经改变,则会通过reload()方法
    • 重新加载该文档
    • 如果没有,则该方法从缓存中加载文件
  • 该方法如果有参数,则会从服务器中重新加载
  • 该方法如果没有参数,则会优先从缓存器中重新加载

注意:

  • reload()方法调用之后可能会造成reload 加载顺序
  • 之后的文档不执行
  • 所以一般讲reload()放在最后


relace()

  • 用新的文档代替当前文档
  • 该方法不会在history 对象中生成记录。
  • 使用该方法时,会直接采用新的URL 覆盖History

History 对象

  • history 对象包含用户(当前浏览器窗口)中访问过的URL
  • history 对象是window 对象的一部分
  • 可以进行window.history 进行访问
  • 属性:
  • length
  • 方法:
  • back() 加载history 列表中的前一个URL
  • toward()加载history 列表中的下一个URL
  • go()加载history 列表中指定的某一页面
    • 如果为负数,代表后退
    • 如果为正数,代表前进
<body>
<button onclick="urlCount()">显示历史记录
<script..>
function urlCount(){
    alert("历史列表中"+history.length + "个URL");
}
function myForward(){
    history.forward();//前进
}
function myBack(){
    history.back();//后退
}
function myGo(){
    history.myGO(-2);//后退两步
</script>    
    

10_navigator 对象

  • navigator 对象包含关于浏览器的信息
  • navigator 对象包含属性描述正在使用的浏览器
  • 我们根据这些属性,进行专门平台的配置
  • 属性:
  • appCodeName
  • appName
  • appVersion
  • systemLanguage
  • language
  • onLine
  • cookieEnable
    • Cookie
    • true
    • false
  • platfrom
  • plugins
  • userAgent

用法:

  • navigator.对应的属性
document.write("appCodeName"+navigator.appCodeName+"<br>");
document.write("appCodeName"+navigator.appCodeName+"<br>");
document.write("appCodeName"+navigator.appCodeName+"<br>");

相应的修改调用上面的数
移动端 B 阶段
媒体查询
Chrome和userAgent

Screen 对象

Screen 对象

  • Screen 对象 包含有关用于屏幕的信息
  • 虽然Screen 对 在JS 中用处不大,
  • 但是Screen 对象 包含浏览器窗口外部的显示器信息
  • 例如能够获取到相应的 像素宽度和高度等
  • 各个浏览器的Screen 对象 都至少包含以下信息
  • =========
  • windth 像素宽度
  • height 像素高度
  • colorDepth 颜色位数
  • avaiWidth 屏幕的像素宽度减去...任务栏
  • availHeight 屏幕的像素高度减去...任务栏
  document.write("width : " + screen.width +"<br>");
    document.write("height : " + screen.height +"<br>");
    document.write("colorDepth : " + screen.colorDepth +"<br>");
    document.write("availWidth: " + screen.availWidth +"<br>");
    document.write("availHeight: " + screen.availHeight+"<br>");

cookie

注意:本地终端
打开百度
cookie实际是能看到的。

JQ...
首先:E C S Network T(网络加载)P Application <-
Application 里面实际是可以看到的

cookie作用 可以作为1.全局变量2. 3. 4. 注意看
cookie缺陷 1.2.3.4. 针对浏览器 例如看到的百度这边
以后工作注意提前进行加密
1.2.。4.56.7.在控制台会有相应的对应
有心情可以查查,目前对我们游泳的是删,增,查

cookie 存储

有两个词必须要给出的
name和value

  1. 参数1 : cookie 的 name
  2. 参数2: cookie 的 value
  3. 参数3: cookie 的 存储时间(单位 day)
  • cookie 中 name 不同,那么就可以存储多个 cookil
function saveCookie(name,value,expireday){
    //声明一个日期对象
    var date = new Date();
    console.log(date.getDate());
    
    date.setDate(date.getDate()+expireday);
    console.log(date.toGMTString());
}

cookie 的内容其实就是一段纯文本

encodeURLComponent()

  • 该函数可以将字符串作为URL 组件去进行编码
  • 返回值:
  • URLString 的副本,其中某些字符将其
  • 十六进制转义序列化
        var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value) + ";expires = " + date.toGMTString();
            document.cookie = cookieText;
    }
</script>
</html>

储存

function getCookie(name){
    //先去拿到cookie 中的字符串
    var cookieText = document.cookie;
    //获取要查找到的cookie 的name 所在的下标
    var index = cookieText.indexOf(name+"=");
    if(index != -1){
        //查找指定的cookie 结束位置
        var endIndex = 
        cookieText.indexOf
        ...
        //把想要的cookie 中的 value 获取出来
        
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,746评论 0 8
  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,226评论 0 5
  • JS简介 外部JavaScript中文件的文件扩展名为.js,如果使用外部文件,那么标签需要设置它的src属性为文...
    Grape_葡萄阅读 903评论 1 6
  • JS Window-浏览器对象模型 浏览器对象模型(BOM)使JS有能力与浏览器对话 由于现代浏览器几乎实现了JS...
    figure_ai阅读 1,272评论 0 2
  • 什么是BOM BOM:Browser Object Model 是浏览器对象模型,浏览器对象模型提供了独立与内容的...
    LaBaby_阅读 221评论 0 0