首页 > 代码库 > JSONP / DOM / BOM 部分总结
JSONP / DOM / BOM 部分总结
#JSONP 跨域请求
JSONP原理:通过动态创建script标签,利用其scr跨域的属性,访问其他域的服务器,请求数据并通过回调函数返回请求的结果
20:26 2017/7/13 突然发现在记事本按F5可以自动写出当前日期和时间,美滋滋
1.递归函数应该始终使用arguments.callee来递归的调用自身. 不要使用函数名 (函数名可能会发生变化)
2.匿名函数 也叫 拉姆达函数
3.关于闭包的作用域: 闭包的作用域链包含着它自己的作用域. 包含函数的作用域和全局作用域
通常,函数的作用域及其所有变量都会在函数执行结束后被摧毁, 但是当一个函数返回了一个闭包时,这个函数的
作用域会一直在内存中保存到闭包不存在为止.
创建闭包必须维护额外的作用域,所以过度的使用它们可能会占用大量的内存..
关于DOM :
获取浏览器/可视窗口大小:
浏览器窗口的大小. IE9+ 及 标准浏览器 innerWidth , innerHeight ,outerWidth , outerHeight
在IE9+ safari Firefox 中 outWidth 和 outHeight 返回浏览器窗口本身的大小(无论是从window对象还是
从某个框架访问) . 在opera中, 这个两个属性表示的是页面视图容器(opera中单个标签页对应的浏览器窗口)的大小
在谷歌浏览器中这 四个属性返回相同的值,即可视窗口大小而非浏览器窗口大小
document.documentElement.clientHeight
document.documentElement.clientWidth
IE6中
document.body.clientHeight / document.body.clientWidth
window下的方法
open()可以导航到一个特定url,也可以打开一个新的浏览器窗口,这个方法接受四个参数 : 要加载的url , 窗口目标
,一个特性字符串以及一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值 . 通常只传第一个参数
close() 关闭窗口
setTimeout() 超时调用 clearTimeout()
setTimeout的参数 ,第一个参数可以function ,可以是包含js代码的字符串.如同eval() 一样.
传递字符串可能导致性能损失( 具体损失在哪里 ? ), 因此不建议以字符串作为第一个参数
setInterval() 间歇调用 clearInterval()
清除间歇调用的ID很重要,因为他会一直执行下去,而 超时调用,每次执行之后,如果不设置另一次
超时调用,调用会自动停止.
一般的来说,使用超时调用来模拟间歇调用是一种最佳模式,在开发环境下,很少使用一个真正的间歇调用,
原因是下一次间歇调用可能会在前一次调用结束前启动. 所以最好不要使用间歇调用 (怪不得大牛的代码都是用的递归+setTimeout
实现setInterval的效果)
系统对话框 :
alert() confirm() prompt()
BOM对象:
location对象是最有用的BOM对象之一, 他提供与当前窗口加载的文档有关的信息, 还提供了一些导航功能.
location既是window对象的属性,也是document对象的属性,
location的几个属性
1.hash 返回URL中的hash(#号后跟零或多个字符)
2.host 返回服务器名称和端口号(如果有的话) www.baidu.com:80
3.hostname 返回服务器名称
4.href 返回当前加载的页面的完整URL 用于页面跳转 location的toString()方法也返回这个值
location.hrefhttp://www.mamicode.com/= "" === localtion.assign()方法一样 20:57 2017/7/13
5.protocol "https:" 返回页面使用的协议 . http/https
6.返回url的查询字符串, 查询字符串以问号开头 "?q=javascript"
除去hash外 每次设置location的属性, 页面都会以新的URL重新加载
DOM
nodeType 判断节点的类型
1 元素
2 属性
3 文本
nodeName / nodeValue
节点的属性 : childNodes firstChild lastChild parentNode previousSibling nextSibling
方法: hasChildNodes() 在一个节点包含一个或多个子节点的时候返回 true
appendChild() 在末尾插入一个节点
insertBefore() 在开头插入一个节点
replaceChild(newNode,oldNode) 替换节点 该节点的关系指针都会从被它替换的节点复制过来, 尽管从技术上讲
被替换的节点仍然还在文档中,但他在文档中已经没有了自己的位置
removeChild() 删除节点 原理与replaceChild()相同
cloneNode() 克隆节点 参数为true时深复制(所有内容html) 参数为false只复制当前节点
normalize() 处理文档树中的文本节点, 调用此方法后,会在其后代节点中查找一个文本节点或多个连续的文本节点
,如果找到了就删除它.
document类型 : 表示文档
nodeType : 9
nodeName : "#document"
属性: title 标题 document.title 设置或获取标题
URL document.URL 获取完整的URL
domain 域名 document.domain 获取域名
referrer document.referrer 获取来源页面的URL
事件对象 21:39 2017/7/13
在触发DOM上的某个事件时, 会产生一个事件对象event, 这个对象中包含着所有与事件有关的信息,包括导致事件的元素,
事件的类型以及其他与特定事件相关的信息
JSONP / DOM / BOM 部分总结