在实际的业务逻辑中,经常是与时间相关的,而前端能获得的时间有两个:客户端的时间,服务器的时间.
客户端时间通过 javascript中的Date对象可以获取,如
var dt = new Date(); var tm = dt.getTime();
那么tm就是客户端的时间,另外也可以通过对应的getFullYear(),getMonth(),getDate()取到对应的年月日等...
但这个时间可靠吗?
好吧,那取服务器时间吧
经常用到的是后台写一个php,jsp,cgi,asp...通过这些程序来返回一个时间,这是一种解决方案,但仅仅一个时间点,有必要用程序后台程序来实现吗?
那还有什么解决方案吗?
PS:在生成页面的时候把服务器时间就写在里边,然后就可以直接用了.但如果只是一个静态页面了呢,能这么干吗?
好吧,我在这里提出我的解决方案: Ajax HTTP Head法
原理:
一般服务器在发送静态页面的时候(apache, nginx, lighttpd就目前所知)都是会在 HTTP 头里带一个Date的头信息的,那么我用Ajax直接取头信息里的Date不就OK了吗!8)
PS:但ajax发请求出去不是会有正文返回吗,那正文的内容比请求一次动态页面的代价可高多了,是这样的吗?8)
实现:
var xhr = new XMLHttpRequest(); if( !xhr ){ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.open("HEAD",location.href,true); xhr.onreadystatechange=function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ alert(xhr.getResponseHeader("Date")); } } xhr.send(null);
解释:
常见的Ajax请求方法为GET,POST而这两种请求都可能会返回正文体,而发HEAD头则只会返回对应的头信息,不会有正文,且只要javascript可以执行,就可以取当前域的地址作为请求地址,有一定的通用性,且避免了跨域的问题.:lol:
实践:
以上代码的完整版在ie6,7,8,9,opera,chrome,firefox下测试通过
适用范围:
javascript正常执行的作用域是http/https下生效
其他:
服务器一定会返回Date头信息吗?
这个是RFC里要求服务器必须实现的,只有在101,103,500等几个状态码的情况下服务器才可以不返回Date头.但我们的location.href不在这个情况之列,所以只要当前javascript代码能正常执行(http方式),那么这个时间就可以取得到
定制的服务器不在本文讨论范围之内
转载请保留以下内容:
author:mooring
sites: http://mooring.iteye.com
date:2012/02/23
相关推荐
Burnside 只用Javascript实现快速和可靠的E2E Web测试
5、增加ID发布页智能排列的功能(只限顺序读取),当排在前面的发布页无效时会把有效获取到ID的发布页排列到前面,在以后就会优先获取这个发布页。 1.7.1.4_x64更新:2009-11-07 1、修正内置ID发布页。 2、修正非...
MotionKit - 只用两行或几行代码就能够从加速度计,陀螺仪和磁力计获取数据
js时间控件 精确到秒 . 主要提供一个在网页中不用手动输入日期,以防输入格式错误,只用简单的选择就可以把日期正确写入文本框。.
js导航 不用任何图片 用css +JavaScript 就可以
PhoneGap是一款开源的手机应用开发平台,它仅仅只用HTML和JavaScript语言就可以制作出能在多个移动设备上运行的应用。PhoneGap将移动设备本身提供的复杂的API进行了抽象和简化,提供了一系列丰富的API供开发者调用,...
只用视频地址就能获取缩略图了,非常方便,分享给大家
5、增加ID发布页智能排列的功能(只限顺序读取),当排在前面的发布页无效时会把有效获取到ID的发布页排列到前面,在以后就会优先获取这个发布页。 1.7.1.4_x64更新:2009-11-07 1、修正内置ID发布页。 2、修正非...
GridView固定表头(不用javascript只用CSS!,很好用
CSS Todo App:没有JavaScript只用HTML和CSS实现一个基本的todo app
5、增加ID发布页智能排列的功能(只限顺序读取),当排在前面的发布页无效时会把有效获取到ID的发布页排列到前面,在以后就会优先获取这个发布页。 1.7.1.4_x64更新:2009-11-07 1、修正内置ID发布页。 2、修正非...
OC调用JS,JS调用OC,注解详细,简单好用,移动端只用js的一些方法
只用that只用which只用who引导定语从句的情况PPT课件.pptx
java实现获取本地文件夹下面的所有文件名,只用一个方法,简单而不简单
没有switch case 没有if 只用关心键盘响应函数 欢迎提出意见 <title>key test <script src="keyProcess.js"> //一次性设置a-z的所有符号 var arr = []; //a的keyCode是65,所以先设置64 arr[64] = ...
今年的项目开发中,初步接触了移动端WEB开发,也就边学习HTML5边开发,主要使用了JQuery Mobile技术,发现这个不...我们这样做不都是为了赶时间,能够尽快将新功能发布嘛。 1.手机WEB定位方法: 代码如下: var getLo
这是一款通过js编程方式实现多种鼠标hover特效。该特效的目的是通过js代码来模拟鼠标移动接近某个目标元素时,在特定的元素上产生动画效果。
下载后直接替换原本的代码即可
备用服务器 平时只用主服务器,当主服务器死机或关机时,才需要备用服务器。(不用第三方软件办不到的吧?)备用服务器(可以是三层更新,视频监控,网管程序等,但机子配置还能太差。。。) 备用服务器 实现方法 0...
Shinatra - 只用55行bash脚本实现的一个简单的web服务器