1

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

我使用的一个站点会告诉您您上次执行显示服务器时间的时间...但是页面角落的时钟显示了我的时区...我希望编写一个脚本来更改它,但希望有一个内置函数,而不是我必须编写脚本来做数学...

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

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

4

1 回答 1

1

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

不过,Greasemonkey 可以通过特殊的HEADAJAX 获取服务器时间。这是一个完整的用户脚本:

// ==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. 获取的时间通常在目标页面看到的时间的几毫秒内。但是,根据您的脚本、页面、网络流量等,获取时间也可能在目标页面启动时间之后几秒钟。你不能得到一个精确的匹配。
于 2013-09-28T22:35:37.673 回答