您的位置:首页 > Web前端 > JavaScript

【笔记】 《js权威指南》- 第13章 浏览器中的JS

2016-04-05 16:06 274 查看
1.在html中嵌入JS:

(1).<script>元素:

<script><![CDATA[
//代码
]]></script>


(2). <script>元素的src属性:使用外部js。

(3). <script>元素的type属性:定义脚本语言的类型,默认为text/javascript

<script type="text/vbscript">
</script>


2.js程序的执行:

(1). 同步异步和延迟的脚本:

当HTML解析器遇到script标签时,它默认必须先执行脚本,在脚本下载加载完毕以后才开始页面UI渲染;

默认的执行时同步阻塞的,可以使用defer async属性(在支持的浏览器)改变执行方式

<!-- 延迟脚本执行,先载入解析DOM -->
<script defer src = "a.js"></script>
<!-- 异步执行脚本和解析DOM -->
<script async src = "a.js"></script>
<!-- 只识别async -->
<script async defer src = "a.js"></script>

//异步加载的兼容实现
function loadasync(url) {
var head = document.getElementsByTagName("head")[0];
var s = document.createElement("script");
s.src = url;
head.appendChild(s);
}


(2)..客户端js的线程模型:

a. setTimeout和setInterval;

b. Web Worker(ECMAS5);

3. 兼容性和互用性:

(1).使用处理兼容性问题的类库:

e.g jQuery 使用bind方法处理事件;

(2).功能测试:

if (element.addEventListener) {
}
else if (element.attchEvent) {
}
else {
}


(3).标准模式和怪异模式的判断:

通过html文件顶部的doctype决定文档的渲染方法是标准模式和怪异模式;

如果document.compatMode为CSS1Compat为标准模式,如果为BackCompat或者undefined表明怪异模式。

(4). IE浏览器中的条件注释:

<!--[if IE 6]>
<![endif]-->

<!--[if lte IE 6]>
<![endif]-->

<!--[if !IE]><-->
<!--><![endif]-->

/*@cc_on
@if (@_jscript)
//IE会执行
alert('You are using IE');
@else*/
//IE以外会执行
alert("Not IE");
/*@end
@*/


5.安全性:

(1). JS中的一些安全性限制:



(2). 同源策略:

概述:

.脚本只能读取和所属文档来源相同的窗口和文档的属性。同理发送http请求。

文档的来源包含协议、主机以及端口:

不同Web服务器载入的文档来源不同;

同一主机不同端口载入的文档来源不同;

使用http协议载入的两个文档及时来自同一个服务器也属于来源不同;

使用不严格的同源策略:

a.document.domain属性。

默认情况为载入文档的服务器的主机名。

e.g 初始值"home.example.com",设置为"example.com"这样诸如"xx.example.com"的子域如果设置了相同的domain值就和主页属于同源。

b. 跨域资源共享:

允许如武器用头信息显示列出源,如果使用通配符则表示允许任何源。这样就能接受跨域http请求。

c. 跨文档消息:

允许不同源的脚本传递文本消息。window.postMessage 和onmessage响应。

(3). 跨站脚本 XSS:

如果Web动态产生内容,并且该内容是基于用户提交的数据,那么需要将这个数据去标签化,以防不良脚本的植入。

name = name.replace(/</g, "<").replace(/>/g, ">");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息