ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
1.CORS CORS(Corss-Origin Resource Sharing,跨资源共享),基本思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应的成功或失败。即给请求附加一个额外的Origin头部,其中包含请求页面的源信息(协议、域名和端口),以便服务器根据这个头部决定是否给予响应。 2.document.domain 将页面的document.domain设置为相同的值,页面间可以互相访问对方的JavaScript对象。 注意: 不能将值设置为URL中不包含的域; 松散的域名不能再设置为紧绷的域名。 3.图像Ping var img=new Image(); img.onload=img.onerror=function(){ ... ... } img.src="url?name=value"; 请求数据通过查询字符串的形式发送,响应可以是任意内容,通常是像素图或204响应。 图像Ping最常用于跟踪用户点击页面或动态广告曝光次数。 缺点: 只能发送GET请求; 无法访问服务器的响应文本,只能用于浏览器与服务器间的单向通信。 4.Jsonp var script=document.createElement("script"); script.src="url?callback=handleResponse"; document.body.insertBefore(script,document.body.firstChild); JSONP由两部分组成:回调函数和数据 回调函数是接收到响应时应该在页面中调用的函数,其名字一般在请求中指定。 数据是传入回调函数中的JSON数据。 优点: 能够直接访问响应文本,可用于浏览器与服务器间的双向通信。 缺点: JSONP从其他域中加载代码执行,其他域可能不安全; 难以确定JSONP请求是否失败。 5.Comet Comet可实现服务器向浏览器推送数据。 Comet是实现方式:长轮询和流 短轮询即浏览器定时向服务器发送请求,看有没有数据更新。 长轮询即浏览器向服务器发送一个请求,然后服务器一直保持连接打开,直到有数据可发送。发送完数据后,浏览器关闭连接,随即又向服务器发起一个新请求。其优点是所有浏览器都支持,使用XHR对象和setTimeout()即可实现。 流即浏览器向服务器发送一个请求,而服务器保持连接打开,然后周期性地向浏览器发送数据,页面的整个生命周期内只使用一个HTTP连接。 6.WebSocket WebSocket可在一个单独的持久连接上提供全双工、双向通信。 WebSocket使用自定义协议,未加密的连接时ws://;加密的链接是wss://。 var webSocket=new WebSocket("ws://"); webSocket.send(message); webSocket.onmessage=function(event){ var data=event.data; ... .... } 注意: 必须给WebSocket构造函数传入绝对URL; WebSocket可以打开任何站点的连接,是否会与某个域中的页面通信,完全取决于服务器; WebSocket只能发送纯文本数据,对于复杂的数据结构,在发送之前必须进行序列化JSON.stringify(message))。 优点: 在客户端和服务器之间发送非常少的数据,减少字节开销。 promise 在 JavaScript 的异步进化史中,涌现出一系列解决 callback 弊端的库,而 Promise 成为了最终的胜者,并成功地被引入了 ES6 中。它将提供了一个更好的“线性”书写方式,并解决了异步异常只能在当前回调中被捕获的问题。 Promise 就像一个中介,它承诺会将一个可信任的异步结果返回。首先 Promise 和异步接口签订一个协议,成功时,调用resolve函数通知 Promise,异常时,调用reject通知 Promise。另一方面 Promise 和 callback 也签订一个协议,由 Promise 在将来返回可信任的值给then和catch中注册的 callback。 // 创建一个 Promise 实例(异步接口和 Promise 签订协议) var promise = new Promise(function (resolve,reject) { ajax('url',resolve,reject); }); // 调用实例的 then catch 方法 (成功回调、异常回调与 Promise 签订协议) promise.then(function(value) { // success }).catch(function (error) { // error }) 判断浏览器是否支持css3某个属性 function isPropertySupported(property) { return property in document.body.style; } RegExp JavaScript RegExp 对象有 3 个方法:test()、exec() 和 compile()。 (1) test() 方法用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 true ,否则返回 false; (2) exec() 方法用来检索字符串中与正则表达式匹配的值。exec() 方法返回一个数组,其中存放匹配的结果。如果未找到匹配的值,则返回 null; (3) compile() 方法可以在脚本执行过程中编译正则表达式,也可以改变已有表达式。