博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)...
阅读量:5140 次
发布时间:2019-06-13

本文共 3216 字,大约阅读时间需要 10 分钟。

 

一、文档间的通信    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            }        
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'

转载于:https://www.cnblogs.com/wenwenwei/p/10017868.html

你可能感兴趣的文章
selenium+python3模拟键盘实现粘贴、复制
查看>>
网站搭建(一)
查看>>
Spring JDBCTemplate
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Node.js 连接 MySQL
查看>>
那些年,那些书
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>