第9章 通信API

跨文档消息传输

HTML5提供了网页文档之间互相接收与发送信息的功能,不仅同源(域+端口号)的Web网页之间可以互相通信,甚至可以实现跨域通信

想要接受从其他窗口发过来的信息,要对窗口对象的message事件进行监视

window.addEventListener("message",function(){...},false);

使用window对象的postMessage方法向其他窗口发送消息

otherWindow.postMessage(message,targetOrigin);

第一个参数为所发送的消息文本,也可以是任何的Javascript对象(通过JSON转换对象为文本);第二个参数为接受消息的对象窗口的URL地址(例如http://localhost:8080/),可以使用通配符“*”指定全部地址。otherWindow为要发送窗口对象的引用,可以通过window.open返回该对象,或通过对window.frames数组指定序号返回单个frame所属的窗口对象

1)通过访问message事件的origin属性,可以获取消息的发送源(发送源与网站的URL地址不是同一概念,发送源只包括域名与端口号,最好检查发送源)

2)message事件的data属性,可以获取消息内容(可以是任何Javascript对象)

3)postMessage方法发送消息

4)通过访问message事件的source属性,可以获取消息发送源的窗口对象(准确的说是窗口的代理对象)

JSON对象的stringify方法将Javascript对象转换成文本,使用parse方法将文本还原为Javascript对象,任何Javascript对象可以通过这种方式在网页文档、端口、域之间传递消息

Web Sockets通信

Web Sockets是HTML5提供的在应用程序中客户端与服务器端之间进行的非HTTP通信机制,它实现了用HTTP不容易实现的服务器端的数据推送等智能通信技术

建立一个非HTTP的双向连接(实时永久,除非被显式关闭),客户端只要有一个被打开的套接字与服务器建立了连接,服务器就可以把数据推送过来,从被动到主动

使用Web Socket API

将URL字符串作为参数,然后调用构造器

var webSocket=new WebSocket("ws://localhost:8005/socket");

URL字符串必须以“ws”、“wss(加密通信时)”文字作为开头,javascript脚本中可以通过访问WebSocket对象的url属性来重新获取,使用WebSocket对象的send方法对服务器发送数据

webSocket.send("data");

通过获取onmessage事件句柄来接收服务器传过来的数据

webSocket.onmessage=function(event){

    var data=event.data;

    ...

  }

通过获取onopen事件句柄来监听socket的打开事件

webSocket.onopen=function(event){

    //开始通信时的处理

  };

获取onclose事件句柄来监听socket的关闭事件

webSocket.onclose=function(event){

    //通信结束时的处理

  };

通过使用close方法来关闭socket,切断通信连接

webSocket.close();

另外还可以通过读取readyState属性值来获取WebSocket对象的状态

CONNECTING(数字为0)表示正在连接  OPEN(数字为1)表示正在建立连接  CLOSING(数字为2)表示正在关闭连接  CLOSED(数字为2)表示已关闭连接

第10章 使用Web Workers处理线程

var worker=new Worker("worker.js");

需要注意的是,后台线程中不能访问页面或窗口对象,如果使用到则会引发错误

在后台线程中接收消息

worker.onmessage=function(event){

    //处理接收到的消息

  }

对后台线程发送消息

work.postMessage(message);  //文本数据

线程嵌套:线程中可以嵌套子线程,把一个较大的后台线程切成几个子线程,在每个子线程中完成相对独立的一部分

在多个子线程中进行数据的交互,步骤如下

1)先创建发送数据的子线程

2)子线程执行任务,再传给主线程

3)再创建一个子线程,将主线程中的数据传给新的子线程

4)新的子线程执行代码

线程中可用的变量、函数与类

self:本线程范围内的作用域

postMessage(message):向创建的源窗口发送信息

onmessage:接收消息的事件句柄

importScript(urls):导入其他Javascript脚本文件,可以是多个,导入的文件与使用该线程文件的页面必须是同一个域、同一个端口中

importScripts('script1.js','scripts\script2.js');

navigator对象:与window.navigator对象类似

sessionStorage/localStorage:可以在线程中使用WebStorage

XMLHttpRequest:可以在线程中使用Ajax请求

Web Workers:可以在线程中嵌套线程

setTimeout()/setInterval():线程中实现定时处理

close:结束本线程

eval()、isNan()等:可以使用Javascript核心函数

object:可以创建和使用本地对象

WebSockets:可以使用WebSocketsAPI向服务器发送和接收信息

HTML5与CSS3权威指南.pdf5的更多相关文章

  1. Html5与CSS3权威指南 百度云下载

    Html5与CSS3权威指南 百度云下载 链接:http://pan.baidu.com/s/1hq6Dlvm 密码:php3

  2. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  3. 【HTML5 4】《HTML5与CSS3权威指南》 step1 导读

    一.教程重点:以 HTML5和CSS3的新功能和新特性 为导向,辅之以 实战型实例页面 二.内容概况: 第1部分:详细讲解HTML5相关知识,包括 各主流浏览器对HTML5的支持情况. HTML5与H ...

  4. HTML5与CSS3权威指南.pdf6

    第11章 获取地理位置信息 HTML5为window.navigator对象新增了一个geolocation属性 取得当前地理位置 void getCurrentPosition(onSuccess, ...

  5. HTML5与CSS3权威指南笔记案例1

    第1章 <!DOCTYPE html> <meta charset = "UTF-8"> <title> Search </title&g ...

  6. HTML5与CSS3权威指南

    第一章:Web时代的变迁 HTML5放心使用的理由: 兼容性:HTML5在老板本的浏览器上也可以正常运行: 实用性:HTML5内部并没有封装什么很复杂的,不切实际的功能,而只是封装了简单实用的功能: ...

  7. 读《HTML5与CSS3权威指南(上册)》笔记

    第二章 1.内容类型:“text/html”.DOCTYPE声明:<!DOCTYPE html>.指定字符编码:<meta charset="utf-8"> ...

  8. HTML5与CSS3权威指南.pdf9

    第21章 Media Queries相关样式 该模块中允许添加媒体查询(media query)表达式,用以指定媒体类型,根据媒体类型来选择使用的样式(显示器.便携设备.电视机) 使用方法@media ...

  9. HTML5与CSS3权威指南.pdf8

    第17章 与背景和边框相关的样式 与背景相关的新增属性 background-clip指定背景的显示范围 background-origin指定绘制背景图像时的起点 background-size指定 ...

随机推荐

  1. ubuntu 安装flash插件

    参考文献: http://wiki.debian.org.hk/w/Install_Flash_Player_with_APTapt-get install adobe-flashplugin

  2. 【PHP】解决html网页乱码问题

    在自己制作一个网页时,时常会遇到网页乱码的问题. 其实导致网页乱码主要有几个原因,以下给出解决方法. 1.HTML的字符编码问题 该问题较常见,也是最明显和最容易解决的. 在网页<head> ...

  3. PDO操作mysql数据库(一)

    PHP连接mysql数据库: <?php$server = "localhost";$user = "root";$pwd = "123456& ...

  4. wdcp日志

    apache或nginx都有开关默认日志,一个是正常访问日志,一个是错误的日志,目录在 /www/wdlinux/nginx-1.0.15/logs /www/wdlinux/httpd-2.2.22 ...

  5. yii2源码学习笔记(十七)

    Theme 类,应用的主题,通过替换路径实现主题的应用,方法为获取根路径和根链接:yii2\base\Theme.php <?php /** * @link http://www.yiifram ...

  6. Homebrew安装php5及composer for mac教程

    安装brew 可以查看教程:mac os x 10.9.1 安装 Homebrew软件包管理工具及brew安装maven3.1.1 首先更新下brew软件库 brew update brew tap ...

  7. VS2015 + QT5.7 中文的坑

    试验1: #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif #include < ...

  8. c++读文件-对try-throw-catch的应用

    #include<iostream> #include<fstream> #include<stdlib.h> #include<stdio.h> us ...

  9. C语言学习笔记——堆和栈——未整理

    C语言笔记     栈区     栈stack是一种先进后出的内存结构,所有的自动变量,函数的形参都是由编译器自动放出栈中,当一个自动变量超出其作用域时,自动从栈中弹出.出入栈是由C语言编译器自动分配 ...

  10. 推送 -- error:Not get deviceToken yet

    获取不到devicetoken请检查: 1)     请检查你的pushconfig里的appkey与应用详情中是否一致 2)     bundleid有3处需要检查是否一致:a.你的应用详情中的bu ...