【发布时间】:2020-09-27 18:47:07
【问题描述】:
我们目前通过以下 JavaScript 函数在 ColdFusion Web 应用程序中显示时间戳信息。当用户单击网页上的 HTML 按钮时调用此函数。问题是时间只是最后一页加载时的当前时间。因此,如果用户在页面上坐了一会儿,时间就会变得不准确。
在 JavaScript 中是否有更优雅、更准确的方法来做到这一点?或者 ColdFusion 有没有办法实时提取服务器时钟信息?
HTML 按钮
<input class="timerStart" id="startButton2" type="button" value="Insert Start Time" onclick="insertAtCaret('messageBody','---Start Time:#DateFormat(Now())# : #TimeFormat(Now())#---');" />
Javascript 代码
function insertAtCaret(areaID,text) {
var txtarea = $("textarea[data-focused=true]")[0];
if(txtarea!=undefined)
{
var scrollPos = txtarea.scrollTop;
var strPos = 0;
var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
"ff" : (document.selection ? "ie" : false ) );
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
strPos = range.text.length;
}
else if (br == "ff") {strPos = txtarea.selectionStart;}
var front = (txtarea.value).substring(0,strPos);
var back = (txtarea.value).substring(strPos,txtarea.value.length);
txtarea.value=front+text+back; strPos = strPos + text.length;
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
range.moveStart ('character', strPos);
range.moveEnd ('character', 0); range.select();
}
else if (br == "ff") {
txtarea.selectionStart = strPos;
txtarea.selectionEnd = strPos;
txtarea.focus();
}
txtarea.scrollTop = scrollPos;
}
}
【问题讨论】:
-
我不知道所有 js 代码应该做什么,但我知道
Date.now()是一个返回当前日期和时间的 javascript 函数。然后,您可以使用getHours()和getMinutes()函数并根据需要显示结果。 -
时间真的需要与您的服务器时间相匹配,还是您对使用来自用户计算机的时间感到满意(在大多数情况下这是正确的)?如果您对此感到满意,您需要将格式化的日期字符串发送到您的 JavaScript 函数,格式示例可以在这里找到:stackoverflow.com/questions/5416920/… 如果您真的想使用您的服务器时间,您需要创建一个服务器端脚本并拉入使用 Ajax 请求的时间。
-
@MaartenVeerman - 使用来自用户计算机的时间是可以的,只要时间是当前的。就像我在帖子中提到的那样,我现在的操作方式仅在上次页面加载时是最新的。
标签: javascript