文档通信(跨域-不跨域)、时时通信(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 ...
随机推荐
- Android活动条(actionbar)使用具体解释(一)
活动条(ActionBar)是Android3.0的重要更新之中的一个.ActionBar位于传统标题的位置,其主要提供了例如以下功能: >显示选项菜单的菜单项,即激昂菜单项显示 ...
- Vmware虚拟机安装XP系统
刚开始下载的雨林木风ghost镜像,首先是虚拟机无法自动识别系统版本.然后启动的时候也是无法从光驱启动,又接连下载了几个版本的系统镜像, 都是ghost的,都不好使,百度,偶然发现有人提了一句,需要用 ...
- EasyDarwin开发出类似于美拍、秒拍的短视频拍摄SDK:EasyVideoRecorder
EasyVideoRecorder Github:https://github.com/EasyDarwin/EasyVideoRecorder EasyVideoRecorder作为一款短视频拍摄的 ...
- Xcode各个版本及模拟器下载
如果你嫌在 App Store 下载 Xcode 太慢,你也可以选择从网络上下载: Xcode下载(Beta版打的包是不能提交到App Store上的) 绝对官方源!!!绝对官方源!!!绝对官方源!! ...
- 绝对定位(absolute)
绝对定位(absolute),作用是将被赋予此定位方法的对象从文档流中拖出,使用left,right,top, bottom等属性相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象的父级 ...
- CentOS系统文件和目录管理相关的一些重要命令
我们都知道,在Linux系统中,基本上任何我们需要做的事都可以通过输入命令来完成,所以在Linux系统中命令非常的多,我们不可能也没必要记住所有的这些命令,但是对于一些常用的命令我们还是必须要对其了如 ...
- codeforces 652C C. Foe Pairs(尺取法+线段树查询一个区间覆盖线段)
题目链接: C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- java实现EXCEL数据导入到数据库中的格式问题的解决
之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...
- 【CQ18高一暑假前挑战赛5】标程
[A:暴力] #include<bits/stdc++.h> using namespace std; ; int a[maxn],vis[maxn],N,M; int main() { ...
- Dom4J 解析xml ,类查询
/** * 从XML文件比对,传入provinceId 返回 provinceShortName * @param provinceid * @return */ public static Stri ...