内置JavaScript / Greasemonkey函数来获取服务器时间

Built in JavaScript/Greasemonkey function to get server time?

本文关键字:获取 服务器 时间 函数 JavaScript Greasemonkey 内置      更新时间:2023-09-26

可以使用Greasemonkey获得服务器时间吗?

我使用的一个网站告诉你你上次做一些显示服务器时间的事情是什么时候......但是页面一角的时钟显示了我的时区...我希望写一个脚本来改变这一点,但希望有一个内置函数,而不是我必须写一个脚本来做数学时间......

所以换句话说...页面上的时钟可能会说下午 5:54,但给我浇水植物后的页面说我在凌晨 12:54 浇水......记住一个网站的时间和我的时间和我的时间之间的差异已经足够痛苦了......但是当我在网站上显示 2 个不同的时间时,它完全让我失望。

Greasemonkey 可以检索服务器时间吗?

大多数服务器在页面的响应标头中返回服务器时间。 对于当前请求,JavaScript 看不到这些标头,并且 Greasemonkey (尚未)提供查看它们的方法。

不过,Greasemonkey可以使用特殊的AJAX HEAD获取服务器时间。 这是一个完整的用户脚本,可以做到这一点:

// ==UserScript==
// @name     _Get web server time
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_xmlhttpRequest
// ==/UserScript==
GM_xmlhttpRequest ( {
    url:    location.href,
    method: "HEAD",
    onload: function (rsp) {
        var serverTime  = "Server date not reported!";
        var RespDate    = rsp.responseHeaders.match (/'bDate:'s+(.+?)(?:'n|'r)/i);
        if (RespDate  &&  RespDate.length > 1) {
            serverTime  = RespDate[1];
        }
        console.log ("Server Time: ", serverTime);
    }
} );

小心:

  1. 如果服务器尝试将页面"本地化"到您的时区,则服务器时间可能与网页上的时间不同。 大多数优质服务器以格林威治标准时间报告其时间。
  2. 获取时间通常在目标页面看到的时间的毫秒内。但是,根据您的脚本、页面、网络流量等,获取时间也可能是目标页面启动时间后的几秒钟。 您无法获得完全匹配。