文档通信(跨域-不跨域)、时时通信(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 ...
随机推荐
- windows快捷键大全(转载)
常见用法: F1 显示当前程序或者windows的帮助内容. F2 当你选中一个文件的话,这意味着“重命名” F3 当你在桌面上的时候是打开“查找:所有文件” 对话框 F10或ALT 激活当前程序的菜 ...
- Python之Numpy库常用函数大全(含注释)
前言:最近学习Python,才发现原来python里的各种库才是大头! 于是乎找了学习资料对Numpy库常用的函数进行总结,并带了注释.在这里分享给大家,对于库的学习,还是用到时候再查,没必要死记硬背 ...
- elk 日志分析系统Logstash+ElasticSearch+Kibana4
elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示clie ...
- Ace(一)环境搭建
1.下载ACE源码代码 http://www.cs.wustl.edu/~schmidt/ACE.html 2.编译源代码 2.1 进入源码包解压后的ACE_wrappers\ace目录, ...
- [NOIP2011提高组day2]-2-聪明的质监员
2.聪明的质监员(qc.cpp/c/pas) [问题描述] 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到 n 逐一编号,每个矿石都有自己的重量 wi 以及价 ...
- DIY固件系列教程——实现开机LOGO三屏动画的完全替换【转】
本文转载自:http://blog.csdn.net/sdgaojian/article/details/9192433 本教程需要用到如下工具:1,7Z压缩工具2,AddCrc32效验工具3,raw ...
- Hihocoder #1121 二分图一•二分图判定( bfs或者dfs搜索实现 搜索的过程中进行 节点标记 *【模板】)
对于拿到的相亲情况表,我们不妨将其转化成一个图.将每一个人作为一个点(编号1..N),若两个人之间有一场相亲,则在对应的点之间连接一条无向边.(如下图) 因为相亲总是在男女之间进行的,所以每一条边的两 ...
- Appium——详解Appium server capabilities
appium server capabilities来告诉appium,如何运行自动化测试,因此需要详细了解. 官方文档:http://appium.io/slate/en/master/?rub ...
- system调用命令行命令而不显示命令行窗口
system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 #pragma comment( lin ...
- XML简介——可扩展标记语言(Extensible Markup Language)
(What) XML是什么? XML指可扩展标记语言(Extensible Markup Language) 1. XML是一种标记语言,类似HTML. 2. XML具有自我描述性 3. XML ...