JS之BOM、客户端检测和DOM
这是第八章到第十二章的内容,粗略浏览过一遍.
一、BOM
浏览器对象模型。包括了window、location、navigator、screen和history对象。
window:核心对象
1、JS访问浏览器窗口的一个借口
2、全局作用域Global对象,所有在全局作用域中生命的变量,函数都会变成window对象的属性和方法。(全局变量不能通过delete删除,而window对象),如果页面中包含框架,并且保存在frames集合中。在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下)或者框架名称来访问响应的window对象。
框架页面中通过top.frames[i]访问window对象。
窗口位置:
var topPos=(typeof window.screenTop==’number’)?window.screenTop:windw.screenY;
var leftPos=(typeof window.screenTop==’number’)?window.screenTop:windw.screenY;
打开窗口:
window.open()4个参数:需要加载的URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览器
移动窗口:
moveTo(x,y)窗口移动到新的(x,y)坐标值,moveBy(x,y)在水平和垂直方向上移动的像素数
间歇调用和超时调用
超时调用:var id=setTimeout(function(){},1000);
clearTimeout(id)超时调用函数返回一个数值id,可以通过它来取消超时调用计划
间歇调用:setInterval()
系统对话框:
alert()
confirm(’Are u sure?’)
prompt()比confirm增加一个文本输入域,第二个参数可表示默认值,单击ok返回文本域的值,其他返回null
location对象
保存着当前文档的信息,将URL解析为独立的片段(hash.host,href…)
1查询字符串参数
2位置操作:location.href=”http”//...”可以修改hash,search,hostname,pathname和port属性设置为新值来改变URL,这种方法会在浏览器历史记录中生成一条新记录,因此用户可以点击后退按钮导航到前一个页面,而replace()方法无法返回
Location.reload()重新加载,有可能从缓存中加载
Location.reload(true); 重新加载,从服务器
Navigator对象
用于检测显示网页的浏览器类型,Plugins属性,安装插件信息的数组
Hittory对象
客户端检测
先设计最通用的方法然后再使用特定于浏览器的技术,增强该方案。
能力检测—>识别浏览器的能力à保证代码最优化
怪癖检测:识别浏览器的特殊行为
用户代理检测
DOM:
文件对象模型,针对HTML XML
1、节点层次
DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型。每种类型分别表示文档中不同的信息及标记。每个节点都有各自的特点、数据和方法,另外也与其他节点存在某种关系。节点中间的关系构成了层次,而所有页面标记则标为一个以特定节点为根节点的树形结构。
节点关系:每个节点都有个childNodes属性,其中保存着一个NodeList对象。
Node类型
操作节点 appendChild()向chiedNodes列表末尾添加一个节点
insertBefore()插入节点
replaceChild(a,b)a要替换成为a,b被替换的子节点
removeChild 移除子节点
复制: cloneNode(true)深复制false只复制本身
Document.anchors(所有带name的a元素
<a></a>)/forms(<forms></>)/images/links所有带href的a元素
文档写入
将输出流写入到玩各种 write() writeln() open() close()
DOM拓展
QuerySelector()返回第一个 querySelectorAll()所有
HTML5
1 getElementsByClassName()
add(value),
contains(val),
remove(val),
toggle(val)如果列表中已经存在给定的值删除它,如果无,添加它
自定义数据属性 <div id=’’,data-appid=’1234’></div> 添加data-前缀
标记属性:innerHTML/outerHTML
InsertAdjacentHTML() 两个参数,第一个是插入位置,第二个插入html文本
Para1 :beforebegin 在当前元素之前插入一个紧邻的同辈元素
afterbegin 在当前元素之下插入一个新的子元素或则在第一个子元素之前再插入一个新的子元素
beforeend 在当前元素之下插入一个新的子元素或在最后一个子元素之后插入新的子元素
afterend在当前元素之后插入一个紧邻的同辈元素
scroolIntoView()通过滚动浏览器窗口或者某个容器元素,调用元素就可以出现在视口中
文档模式<meta>
插入文本 innerText div.innerText=’sdsd’;
JS之BOM、客户端检测和DOM的更多相关文章
- 读书时间《JavaScript高级程序设计》四:BOM,客户端检测
隔了一段时间,现在开始看第8章. 第8章:BOM BOM提供了很多对象,用于访问浏览器的功能.BOM的核心对象是window,它表示浏览器的一个实例. window对象是通过javascript访问浏 ...
- js,bom,dom(相信我,你看不懂我写的)
js dom bom 2种结合方式: 1.在body中加入script标签,<script type="text/javascript" >alert(" 向 ...
- [Javascript]客户端检测
客户端检测是一种行之有效的开发策略.但不到万不得已,就不要使用客户端检测.先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案. 能力检测 Featu ...
- Javascript高级程序设计——客户端检测
ECMAScript虽然是Javascript的核心,但是要在web中使用Javascript,那么BOM才是核心,BOM为我们提供了操作访问浏览器对象的借口, 但是由于BOM没有标准规范,导致存在不 ...
- JavaScript基础16——js的BOM对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 检测一个DOM对象是否为空
我们时常要检测一个DOM对象是否为空. var $jObject = $('#btn'); alert($jObject ); 我们会发现,$jObject 永远不会为空.为什么呢?$ 方法查找对象, ...
- Javascript高级编程学习笔记(34)—— 客户端检测(3)用户代理检测
用户代理检测 前面的文章介绍的是如何检测浏览器对某一功能的支持情况 但是在实践中我们有些时候免不了需要知道用户到底是用的什么浏览器对我们的站点进行访问 这也是统计用户行为的一部分 用户代理检测这种方式 ...
- 【转】从Vue.js源码看异步更新DOM策略及nextTick
在使用vue.js的时候,有时候因为一些特定的业务场景,不得不去操作DOM,比如这样: <template> <div> <div ref="test" ...
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
Atitit.android js 的键盘按键检测Back键Home键和Menu键事件 1. onKeyDown @Override public boolean onKeyDown(int keyC ...
随机推荐
- 部署samba服务之后,在客户端用挂载访问的方式,错误信息:mount: block device //192.168.1.108/mysqldata is write-protected, mounting read-only mount: cannot mount block device //192.168.1.108/mysqldata read-only
部署samba服务之后,在客户端用挂载访问的方式,错误信息:mount: block device //192.168.1.108/mysqldata is write-protected, moun ...
- MongoDB(四)mongodb设置用户访问权限
我们知道MySQL在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全 ...
- DapperExtensions的基本用法
介绍下使用Dapper-Extensions的基本语法 //实体类 DemoEntity entity = new DemoEntity(); //根据实体主键删除 this.Delete<De ...
- YCSB测试Mysql,MongoDB,TokuMX,Couchbase性能
测试是由同事完成的,这里只做收藏. 测试说明: 1.数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值 其他10字段为字符类型,100字符,记录长度 ...
- MySQL之权限管理
MySQL之权限管理 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作, 那么你就不能执行update操作.只 ...
- long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换
long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换
- 几种方法实现ajax请求内容时使用浏览器后退和前进功能
ajax是一个非常好玩的小东西,不过用起来也会存在一些问题. 我们可以利用ajax进行无刷新改变文档内容,但是没办法去修改URL,即无法实现浏览器的前进与后退.书签的收藏功能. 利用location的 ...
- Android 5.0属性
//水波纹效果//v 指定控件 x屏幕的 x轴 y轴 endRadio 起始位置 水波半径Animator circularReveal = ViewAnimationUtils.createCirc ...
- 使用Spring Data JPA查询时,报result returns more than one elements异常
public static <T> T get(String hql, Class<T> t) { EntityManager em = getFactory().create ...
- [原创]Lodop打印, 以及Lodop引用css文件控制打印样式的问题.
最近在做Lodop打印功能: 思路是: 用MasterPage搭个打印页面的框架, 然后在具体的页面中填入数据, 打印的样式由母版页和CSS来控制. 困扰了一天的问题是: 在打印的JS文件中, 引 ...