html 5通信api,html5 笔记5 通信api

1、主要探讨用于构建实时跨源通信的两个重要模块:

。跨文档消息通信

。XMLHttpRequestLevel2  - XMLHttpRequest的改进版

2、跨文档消息通信

可以确保iframe、标签页、窗口间安全地进行跨源通信。

1)它把postMessage API定义为发送消息的标准方式,向通信页面发送信息。

2)接收消息时仅需在页面中增加一个事件处理函数,当某个消息到达时,通过检查消息的来源决定是否对这条消息进行处理。

实例:

1)向另外一个iframe发送消息

var message = 'hello,RIA' + (new Date().getTime());

window.parent.frames[1].postMessage(message, '*');

iframe1向iframe2发送消息,所以是window.parent.frames[1],如果是向父页面发送消息就是window.parent。

postMessage接收两个参数,缺一不可,第一个参数就是要发送的数据;第二个参数主要是处于安全的考虑,填写的是允许通信的域名,“*”就是不对访问的域进行判断。

2)另外一个iframe监听消息事件

var onmessage = function(e) {

// 在发送的时候即指定域:window.parent.frames[1].postMessage(message, 'http://www.snda.com');

if(event.origin !== 'http://www.snda.com')

return;

var data = e.data;

p = document.createElement_x('p');

p.innerHTML = data;

document.getElementById('display').appendChild(p);

};

消息事件中一个拥有data和origin属性的DOM事件。data属性是发送方传递的实际消息,而origin属性是发送来源,可以判断来源是否合法。

3、理解源安全

源是在网络上用来建立信任关系的地址的子集,源有规则(http还是https)、主机、端口组成。跨源通信通过源来确定发送者,这就使得接收房可以忽略或者拒绝来自不可信源的消息。

4、检测浏览器支持情况

if (typeof window.postMessage === undefined) {

alert("your brower does't support postMessage function.");

}

5、XMLHttpRequestLevel2

level2是由XMLHttpRequest发展而来的,主要的改进在于:跨源的XMLHttpRequests和进度事件。

跨源的XMLHttpRequests:XMLHttpRequest仅限于同源通信,level2通过CORS(跨源资源共享)实现跨源的XMLHttpRequests。

跨源HTTP请求包括了一个Origin头部,它为服务器提供HTTP请求的源信息。头部由浏览器保护,不能被应用程序代码更改。本质上讲,它与跨文档消息通信中消息事件的origin属性作用相同。使用跨源XMLHttpRequest可以构建基于非同源服务的web应用程序。

进度事件:在传送数据的时候,有一个progress事件,用来返回进度信息。

它分成上传和下载两种情况,下载的进度事件属于XMLHttpRequest对象,上传的progress事件属于XMLHttpRequest.upload对象。

。load:传输成功完成

。loadstart:传输开始

。loadEnd:传输结束,但是不知道成功还是失败

。error:传输中出现错误

。abort:传输被用户取消

。progress:传输正在进行

6、构建跨源请求

var crossOriginRequest = new XMLHttpRequest();

crossOriginRequest.open("GET","http://www.baidu.com",true);

在请求过程中无比确保能够监听到错误,请求不成功的原因很多。

7、使用进度事件

在表示请求和响应的不同阶段方面,XMLHttpRequestLevel2不再使用数值型状态表示法,而是提供了命名进度事件。为事件处理程序属性设置相应的回调函数后,就可以对这些事件进行监听了。

crossOriginRequest.process = function(e){

var total = e.total;

var loaded = e.loaded;

if(e.lengthComputable){

//

}

}

8、XMLHttpRequest简易教程(老)

XMLHttpRequest是Ajax的核心,通过调用XMLHttpRequest对象的属性和方法可以实现在客户端和浏览器之间进行数据的异步传输,从而实现页面的无刷新效果。 XMLHttpRequest对象的使用的步骤:初始化XMLHttpRequest对象;指定响应处理函数;发送HTTP请求;处理服务器返回的信息。

初始化XMLHttpRequest对象:在使用XMLHttpRequest对象前需要将XMLHttpRequest对象实例化,由于各个浏览器对这个实例化过程的实现不同,因此实例化的方式也不同。

function createXMLHttpRequest(){

if(window.XMLHttpRequest){ // 非IE

xmlHttp = new XMLHttpRequest();

}else if(window.ActiveXObject){ // 针对IE

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

}

指定响应处理函数:接下来就是指定当服务器返回信息时客户端的处理方式

xmlHttp.onreadystatechange = function(){

// Do something...

}

发送HTTP请求:在指定响应处理函数后,就可以向服务器发出HTTP请求了。是用open()和send()方法。

open():建立对服务器的调用。

//XMLHttpRequest对象的open()方法原型

void open(string method, string URL , boolean asynch, string username, string password);

它有2个必要的参数,还有3个可选的参数。method表示向服务器发送信息的方式,可以为Get或Post;URL表示所调用的服务器资源的URL;asynch是一个布尔值,指示这个调用时异步还是同步,默认为true;username和password允许我们指定一个特定的用户名和口令。 一般使用时只取前三个参数即可。

send():向服务器发送请求。如果请求声明为异步的,这个方法就会立即返回,否则它会等待,知道接收到响应为止。参数content是可选的,可以是一个DOM对象的实例、一个输入流或一个串。传入的内容会作为请求体的一部分发送。

处理服务器返回的信息:

function callBack(){

if(xmlHttp.readyState==4){

if(xmlHttp.status==200){

//do something with xmlHttp.responseText;

xmlHttp.responseText;

}

}

}

readyState:表示请求的状态

"0":表示未初始化,即对象已经建立,但是尚未初始化(尚未调用open()方法);

"1":表示正在加载,此时对象已建立,尚未调用send()方法;

"2":表示请求已发送,即send()方法已调用;

"3":表示请求处理中;

"4":表示请求已完成,即数据接收完毕。

status:返回当前请求的HTTP状态码(只读);

statusText:返回当前请求的响应行状态(只读)。

responseText属性表示服务器的文本响应,其处理结果以字符串形式返回。

responseXML属性表示服务器响应,其结果将格式化为XML Document对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值