BOM
BOM,浏览器对象模型,可以使我们通过JS来操作浏览器,在BOM中为我们提供了一组对象,用来完成对浏览器的操作。
BOM对象
BOM对象:
Window,代表的是浏览器的窗口,同时window也是网页中的全局对象。
Navigator,代表的是当前浏览器的信息,通过该对象可以来识别不同的浏览器。
Location,代表当前浏览器的地址栏信息,通过Location可以获取地址栏的信息或者操作浏览器跳转页面。
History,代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录,由于隐私原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页,而且该操作只在当次访问时有效。
Screen,代表用户的屏幕信息,通过该对象可以获取用户的显示器的相关信息。
这些对象在浏览器中都是作为window对象的属性来保存的,可以用window对象来使用,也可以直接使用。
Navigator:appName,返回浏览器的名字,由于历史原因,Navigator中的大部分属性都已经不能帮助我们是被浏览器了,一般只会使用userAgent来判断浏览器的信息。userAgent,是一个字符串,这个字符串中包含有用来描述不同浏览器信息的内容,不同的浏览器会有不同的userAgent,里面都会含有浏览器的名字,可以使用正则表达式来判断是否含有,用i忽略大小写,但是在ie11里面已经将ie的相关标识去除了,可以通过一些浏览器中特有的对象,来判断浏览器的信息,比如:ActiveXObject,但是ie11判断时要使用“ActiveXObject”in window来判断。
History:可以操作浏览器向前或向后翻页。length属性,返回当前访问的url数量。back方法,可以回退到上一个页面,跟浏览器中的左箭头(后退按钮)一样。forward跟back相反。go方法可以用来跳转到指定的页面,需要一个整数作为参数,1:表示向前跳转,2:表示向前跳转两个页面,-1:向后跳转一个页面,-2:表示向后跳转两个页面。
Location:里面封装了浏览器的地址栏信息,如果直接打印location,则可以获取到地址栏的信息,即当前页面的完整路径。如果直接将location属性修改为一个完整的路径或相对路径,则页面会自动跳转到该路径,并且会生成相应的历史记录。assign方法,用来跳转到其他的页面,作用和直接修改location一样。reload方法,用于重新加载当前页面,作用和刷新按钮一样,如果在方法中传递参数true,则会强制清空缓存刷新页面。replace方法,可以使用一个新的页面替换当前页面,调用完毕也会跳转页面,但是不会生成历史记录,不能使用回退按钮回退。
定时器:
setInterval,window对象的方法,定时调用,可以将一个函数,每隔一段时间执行一次,
参数:参数1:回调函数,参数2:每次调用间隔的时间,单位毫秒,返回值,返回一个Number类型的数据,这个数字作为定时器的唯一标识。
clearInterval方法,可以用来关闭一个定时器,需要传递一个定时器的标识作为参数,这样将关闭标识对应的定时器。clearInterval()可以接收任意参数,如果参数是一个有效的定时器的标识,则停止对应的定时器,如果参数不是一个有效的标识,则什么也不做。
自动切换图片练习:目前,我们每点击一次按钮,就会开启一个定时器,点击多次就会开启多个定时器,这就导致图片的切换速度过快,并且我们只能关闭最后一次开启的定时器,所以可以在开启定时器之前,需要将当前元素上的其他定时器关闭。
延时调用:setTimeout,一个函数不马上执行,隔一段时间之后再执行,而且之后执行一次,使用方法跟定时器一致。取消方式,用clearTimeout方法。延时调用和定时调用实际上是可以互相代替的,在开发中可以根据自己需要去选择。
定时器应用:可以将timer变为obj的属性,然后就可以各自管理各自的定时器。
类的操作(class):当要修改样式时,用style一个一个修改很麻烦,可以写好两个class,只需要修改类名就可以应用上样式,若想保留原有的类,可以加上另一个类,如className+=“ b1”,一定要加一个空格。添加一个类,删除一个类,两个类之间切换。
JSON:js中的对象只有js认识,其他语言不认识。json就是一个特殊格式的字符串,这个字符串可以被任意的语言识别,并且可以转换为任意语言的对象,可以达到交互数据的任务。json,JavaScript Object Notation,js对象表示法,用于数据的交互。
json分类:对象{},数组[],都得用引号括起来。
json中允许的值:字符串,数值,布尔值,null,对象,数组。工具类JSON,这个对象可以帮助我们建一个JSON对象转换为JS对象,也可以将JS对象转换为JSON对象。
JSON.prase方法,可以将JSON字符串转换为js对象,需要一个JSON字符串作为参数,会将该字符转换为JS对象并返回。
JSON.stringify方法,可以将一个JS对象转换为JSON字符串,需要一个js对象作为参数,返回一个JSON字符串。
eval函数,用来执行一段字符串形式的JS代码,并将执行结果返回,如果执行的字符串中含有{},它会将{}当成是代码块,如果不希望当成代码块解析,则需要在{}外面套一个();在开发中尽量不用,执行性能差,还有安全隐患。如果要兼容ie7-,可以引入一个外部js文件,json2。