




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 根据浏览器创建实例注:原文:/leadzen/archive/2008/09/06/1285764.htmlJavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。通过userAgent: IE 只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数。只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是IE。而IE各个版本典型的userAgent如下: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT) 其中,版本号是MSIE之后的数字。 Firefox Firefox中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小(IE对应的中是getBoundingClientRect函数)。这是Firefox独有的,判断它即可知道是当前浏览器是Firefox。Firefox几个版本的userAgent大致如下: Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/ Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/2 其中,版本号是Firefox之后的数字。 Opera Opera提供了专门的浏览器标志,就是window.opera属性。Opera典型的userAgent如下: Opera/9.27 (Windows NT 5.2; U; zh-cn) Opera/8.0 (Macintosh; PPC Mac OS X; U; en) Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0 其中,版本号是靠近Opera的数字。 Safari Safari浏览器中有一个其他浏览器没有的openDatabase函数,可做为判断Safari的标志。Safari典型的userAgent如下: Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3 其版本号是Version之后的数字。 Chrome Chrome有一个MessageEvent函数,但Firefox也有。不过,好在Chrome并没有Firefox的getBoxObjectFor函数,根据这个条件还是可以准确判断出Chrome浏览器的。目前,Chrome的userAgent是: Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/7 Safari/525.13 其中,版本号在Chrome只后的数字。 有趣的是,Chrome的userAgent还包含了Safari的特征,也许这就是Chrome可以运行所有Apple浏览器应用的基础吧。 只要了解了以上信息,我们就可以根基这些特征来判断浏览器类型及其版本了。我们会将判断的结果保存在Sys名字空间中,成为前端框架的基本标志信息,供今后的程序来读取。如果判断出谋种浏览器,Sys名字空间将有一个该浏览器名称的属性,其值为该浏览器的版本号。var xmlHttp;function createXMLHttpRequest() if(window.ActiveXObject如果是IE浏览器) xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”);else if(window.XMLHttpRequest如果是火狐内核浏览器;火狐内核浏览器的window属性包含XMLHttpRequest字段(姚老师说) xmlHttp = new XMLHttpRequest();else if(document.getBoxObjectFor) /火狐浏览器 /*这种判断浏览器的方法其实并不好 比较推荐的是判断功能 比如 if(window.XMLHttpRequest) 这种判断只在某些极端的情况下出现 比如处理内存泄露此方法是功能判断,不是类型判断T.C.F同学说:Firefox3.6.8不支持getBoxObjectFor() 而Firefox opera Chrome safari都支持MessageEvent()*/ elseif(window.MessageEvent&!document.getBoxObjectFor) /谷歌浏览器(chrome)elseif(window.opera) /opera浏览器elseif(window.openDatabase) /safari浏览器2. XMLHttpRequest包含的方法 方法描述abort()停止当前请求getAllResponseHeaders()把HTTP请求的所有响应首部作为键/值对返回getResponseHeader(“header”)返回指定首部的串值open(“method”,”url”)建立对服务器的调用;method参数可以是GETPost,其中还包括其他三个参数send(content)向服务器发送请求,可以为nullsetRequestHeader(“header”,”value”)设置指定首部的值,设置前比喻open()open(String method, String url, Boolean asynch, String username, String password);第三个参数为true时为异步通讯,为false时为同步,默认true异步时send(content)向服务器发送请求后立即返回同步时会一直等到接收到响应首部包括Content-Length、Date和URL一般写成xmlHttp.open(“GET”,url);xmlHttp.onreadystatechange = callback;xmlHttp.send(null);3. XMLHttpRequest包含的方法属性描述onreadystatechange每次状态改变触发的函数readyState请求的状态:0=未初始化;1=正在加载;2=正在加载;3=交互中;4=完成responseText将服务器的响应表示为一个字符串responseXML将服务器的响应表示为一个XML,以DOM的模型status服务器的状态(200为OK,404为Not found)等statusText服务器的状态的文本(OK或Not found)等一般在onreadystatechange函数里if(xmlHttp.readyState = 4)if(xmlHttp. status = 200) /需要做的事4. 设置部分首部,使浏览器不会再本地缓存结果Response.setHeader(“Cache-Control”,”no-cache”);Response.setHeader(“Pragma”,”no-cache”);注:原文 /blog/4077001. response.setHeader(Cache-Control,no-cache); This is used to prevent the browser from caching your dynamic content generated by a JSP or Servlet. You set this attribute in the HTTP header of the response object which would tell the browser not to cache this content. So everytime you request the page again, the browser would make a new request, instead of showing you a cached page. 2.使用服务器端控制AJAX页面缓存: response.setHeader( Pragma, no-cache ); response.addHeader( Cache-Control, must-revalidate ); response.addHeader( Cache-Control, no-cache ); response.addHeader( Cache-Control, no-store ); response.setDateHeader(Expires, 0); 单纯的使用 xmlhttp.setRequestHeader(Cache-Control,no-cache)无效。 3.Cache-Control头域 Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下: Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。5. GET和POST的区
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025鱼塘租赁合同样本
- 2025内蒙古鄂尔多斯生态环境职业学院专业技术人员招聘18人模拟试卷带答案详解
- 2025农业生产资料租赁合同范本
- 2025房屋租赁合同范本代理人
- 2025年马鞍山花山区社区工作者招聘40人模拟试卷及完整答案详解1套
- 纯化水考试题库及答案
- 船厂技师考试题库及答案
- 卫生应急考试题库及答案
- 应急救生员证考试题库及答案
- 2025年锅炉工岗位应知应会题库及答案
- 2025年镇江市中考英语试题卷(含答案)
- 6.2《插秧歌》任务式课件2025-2026学年统编版高中语文必修上册
- 航海船舶因应气象预报方案
- 铝合金介绍教学课件
- 电气班组安全教育培训课件
- 2025司法局招聘司法所协理员历年考试试题与答案
- 戊戌变法课件+2025-2026学年统编版八年级历史上册
- 公司合规管理与检查表模板
- 质量月安全知识培训课件
- 企业环保督察迎检工作指南培训
- T/CAQI 96-2019产品质量鉴定程序规范总则
评论
0/150
提交评论