文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)
一、文档间的通信 postMessage对象
//不跨域
1、iframe:obj.contentWindow [iframe中的window对象] iframe拿到父级页面的window: parent(上一层window) top(最顶层window)
2、window.open() 返回值是新窗口的window对象 拿到父级window : window.opener
//跨域
3. 目标域的window.postMessage("xxx","目标域"); 目标域:监听message事件,在ev.data中拿到发送过来的消息
4.ajax需要服务端配合:允许我跨域访问
5.jsonp
//无刷新上传文件
obj.fiels //获取文件列表
var FD = new FormData();
FD.append('name',files[0]) //构建二进制对象
//ajax发送二进制数据给后台
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if( xhr.status == 200 ){
var res = JSON.parse(xhr.response);
alert(res.msg);
}
}
}
//ajax发送源文件
xhr.open('post','post_file.php',true);
xhr.setRequestHeader('X-Request-with','XMLHttpRequest');
xhr.send(FD);
xhr.upload //上传进度对象
事件:
onprogress: 上传事件(上传过程中连续触发)
属性:
ev.total(要发送的总量)
ev.loaded(已发送的总量)
二、websocket:通信协议 -> 与 http类似 (参考阮一峰2012‘互联网协议入门篇’)
1.nodejs搭建前后端
2.使用websocket实现时时传输:
a].安装socket.io:npm install socket.io 引入sokit.io包
//服务端
a].var io = require('socket.io');
var soket = io.listen(httpServer);
b].soket.sokets.on('connection',function(socket){
//socket -> 每个人进来都会产生一个socket
}); //有人进来的事件监听,执行回掉
e]. 服务端->客户端:socket.emit('hello','数据');
h]. 监听客户端'hellohello'事件:socket.on('hellohello',function(data){
//data 客户端过来的数据(数据1)
});
i]. socket.broadcast.emit('a','有新人进来了'); //广播(除了当前的人(刚刚进来的人)接收不到)
//客户端
c].客户端需要发送tcp链接,引入client.socket.js文件 [提供一个io对象。
d]. var socket = null;socket = io.connect('url');发送tcp请求
f]. 客户端监听hello事件: socket.on('hello',function(data){
//data 服务端过来的数据
});
g]. 客户端 -> 服务端:socket.emit('hellohello','数据1');
三、applicationCache 离线存储
1、搭建离线应用程序
//服务器设置头信息
AddType text/cache-manifest .manifest //http.comfig中加 nodeJs: 'AddType': 'text/cache-manifest .manifest'
//html标签添加属性:
manifest='cache.manifest' //xxx就是离线存储的清单列表
//新建cache.manifest文件
先写:
-CACHE MANIFEST
-2.png //就会缓存2.png图片
-FALLBACK
-styl1.css style2.css //第一个网络地址没有获取到,就走第二个缓存
-NETWORK:无论缓存是否有,都从网络获取
四、web worker [开启多线程
1.使用:
//主js中:
var w1 = new Worker('worker1.js'); //开启多线程
w1.postMessage('wenwen'); //用于传递数据
//worker1.js中:
self.onmessage = function(ev){ //self == w1 引用此文件的返回值
ev.data
}
<!--
console.time(1);
.
.
console.timeEnd(1);
//计算执行中间的代码使用的时间,在控制台打印出来
-->
2.运行环境:
navigator:appName appVersion userAgent platform
location:所有属性只读
self: 只想全局worker对象
所有的ECMA对象:Objec...
XMLHttpRequest
setTimeout setIntercal
self.close()方法:内部立即停止worker运行 worker.terminate()//外部结束进程
importScripts('xxx.js')方法引入其他js文件
五、小功能:
1、标签可编辑属性:contenteditable='true'
文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)的更多相关文章
- NanUI文档 - 如何实现C#与Javascript的相互通信
NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript的相互通信 如何处理NanUI中的下载过 ...
- Prism 4 文档 ---第9章 松耦合组件之间通信
当构建一个大而负责的应用程序时,通用的做法时将功能拆分到离散的模块程序集中.将模块之间的静态引用最小化.这使得模块可以被独立的开发,测试,部署和升级,以及它迫使松散耦合的沟通. 当在模块之间通信时,你 ...
- MongoDB改动、删除文档的域属性实例
MongoDB改动.删除文档的域属性实例 在站点的开发中,可能最初的设计不合理.或者后期业务的变更,会造成文档结构会有些无用的属性.须要去删除或改动.因为MongoDB 是无 Schema 的,不像关 ...
- WebAPI使用Swagger生成接口文档
开发工具:VS2017 版本15.7.1 新建项目,选择空模板,下面只勾选WebAPI 配置Web.config <system.webServer> 节点改为 <system.we ...
- 有关Lucene的问题(4):影响Lucene对文档打分的四种方式
原文出自:http://forfuture1978.iteye.com/blog/591804点击打开链接 在索引阶段设置Document Boost和Field Boost,存储在(.nrm)文件中 ...
- Api接口文档管理工具,你知道哪些呢?
上周看到有人在我的Github开源项目中提了个issue,说是否考虑接入swagger.那今天我就用swagger与其他接口文档工具做对比,同时说说Api接口文档工具的那点事.如今,在前后端分离开发的 ...
- Elasticsearch简介、倒排索引、文档基本操作、分词器
lucene.Solr.Elasticsearch 1.倒排序索引 2.Lucene是类库 3.solr基于lucene 4.ES基于lucene 一.Elasticsearch 核心术语 特点: 1 ...
- 关于Elasticsearch文档的描述以及如何操作文档的详细总结
文档 什么是文档 在大多数应用中,多数实体或对象可以被序列化为包含键值对的 JSON 对象. 一个 键 可以是一个字段或字段的名称,一个 值 可以是一个字符串,一个数字,一个布尔值, 另一个对象,一些 ...
- JAVA Asponse.Word Office 操作神器,借助 word 模板生成 word 文档,并转化为 pdf,png 等多种格式的文件
一,由于该 jar 包不是免费的, maven 仓库一般不会有,需要我们去官网下载并安装到本地 maven 仓库 1,用地址 https://www-evget-com/product/564 ...
随机推荐
- Hibernate的基本开发流程
一.Hibernate开发的基本流程 二.Hibernate开发的环境搭建 1.引入Hibernate核心包以及Hibernate依赖包即可.可以在Hibernate目录下的\lib\required ...
- Timing breakdown phases explained
https://developers.google.com/web/tools/chrome-devtools/network-performance/reference#timing-explana ...
- java之折半查找
//功能:二分查找import java.util.*; public class Demo1 { public static void main(String[] args) { int arr[] ...
- Raspberry Pi3 ~ C语言控制串口
注明出处:http://www.cnblogs.com/einstein-2014731/p/5551846.html 使用C语言控制树莓派3B的串口,实现使用串口收发数据的目的.之前以为这个串口是被 ...
- ios 使用json
1.从https://github.com/stig/json-framework/中下载json框架:json-framework 2.解压下载的包,将class文件夹下的所有文件导入到当前工程下. ...
- 在SQL SERVER 2008中通过已有的数据库生成建库脚本
- HihoCoder 1504 : 骑士游历 (矩阵乘法)
描述 在8x8的国际象棋棋盘上给定一只骑士(俗称“马”)棋子的位置(R, C),小Hi想知道从(R, C)开始移动N步一共有多少种不同的走法. 输入 第一行包含三个整数,N,R和C. 对于40%的数据 ...
- 疯狂LCM
传送门 题目要求求: \[\sum_{i=1}^nlcm(i,n)\] 先转化成gcd处理: \[n\sum_{i=1}^n\frac{i}{gcd(i,j)}\] 之后老套路 枚举gcd,并且先把d ...
- css3计算属性(calc)
如果有固定头部高度和底部高度,内容的高度或者宽度想要根据浏览器屏幕自适应的话,可以用到css3的计算属性,即calc. 用法如下: 内容区域高/宽 = calc(100% - 头部高宽 - 底部高宽) ...
- MongoDB复制集成员及架构介绍(一)
MongoDB复制集介绍 MongoDB支持在多个机器中通过异步复制达到提供了冗余,增加了数据的可用性.MongoDB有两种类型的复制,第一种是同于MySQL的主从复制模式(MongoDB已不再推荐此 ...