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. サーバーがページをタイムゾーンに「ローカライズ」しようとすると、サーバーの時刻が Web ページの時刻と異なる場合があります。ほとんどの品質サーバーは、GMT で時間を報告します。
  2. 通常、フェッチされた時間は、ターゲット ページが表示された時間からミリ秒以内です。ただし、スクリプト、ページ、ネットワーク トラフィックなどによっては、フェッチされた時刻がターゲット ページの開始時刻から数秒後になる場合もあります。正確な一致を得ることはできません。
于 2013-09-28T22:35:37.673 に答える