是否有浏览器扩展来更改JavaScript的Date对象返回的内容而不更改系统时钟?是否有浏览器扩展来更改Date对象返回的时间?
这是创建小册子软件时出现的很多东西。您经常想根据当前日期向访客展示特定的促销或创意治疗。如果你使用访问者的系统时钟,测试会变得很烦人,因为你必须改变自己的系统时钟,这当然会弄乱你的日历提醒,上帝知道还有什么。
是否有浏览器扩展来更改JavaScript的Date对象返回的内容而不更改系统时钟?是否有浏览器扩展来更改Date对象返回的时间?
这是创建小册子软件时出现的很多东西。您经常想根据当前日期向访客展示特定的促销或创意治疗。如果你使用访问者的系统时钟,测试会变得很烦人,因为你必须改变自己的系统时钟,这当然会弄乱你的日历提醒,上帝知道还有什么。
虽然在生产不可取的,在开发环境,你可以做到以下几点:
var dateYouWant = 1363798981693;
Date.prototype.getTime = function() {
return dateYouWant;
};
console.log((new Date).getTime());
从本质上讲,覆盖Date()
函数返回您指定的任何时间。
我认为最好的答案可能是这样的,它包装成一个小书签,测试人员可以使用它来在浏览器中设置时间。 – FriendOfFuture 2013-03-20 20:45:59
既然你回复了我的评论,说你会调用一个包装函数作为后备,让我提供该函数。我讨厌修改本机对象,所以我会走这条路:
Here is a jsfiddle to play with.
function getScaledDate(offset){
// if you don't pass in an offset
if (offset === undefined) {
// check to see if there is a global one defined
if (typeof GLOBAL_DATE_OFFSET !== "undefined") {
offset = GLOBAL_DATE_OFFSET;
}
// otherwise, don't add an offset
else {
offset = 0;
}
}
return new Date(+new Date + offset);
}
// USAGE:
var now = getScaledDate();
var oneHourFromNow = getScaledDate(1000 * 60 * 60);
var oneHourAgo = getScaledDate(-1000 * 60 * 60);
// GLOBAL OFFSET USAGE:
window.GLOBAL_DATE_OFFSET = 1000 * 60 * 60 * 7; // scale everything 7 hours foward
var scaledDate = getScaledDate(); // will use global offset
是一个选项,您拨打的,而不是与本地Date对象搞乱一个新的自定义功能?我意识到你可能不得不更新大量的代码来指向这个新的日期对象.. – lbstr 2013-03-20 16:59:40
这将是我的后备。我想有一个可重复的方法来测试这种行为而不添加代码。 – FriendOfFuture 2013-03-20 20:43:59