Ubuntuにjavascriptを使用して、表示されたテキストの一部として最後の変更日を返し、次のものを生成するいくつかのWebページがあります。
Last modified: 08/28/2017
これはページの最終最終修正日です。ただし、最近は現在の日付が返されます。ページを変更していません。確認すると、lastModifiedを正しく返すすべてのWebページでこれが発生します。私のMacintoshにはこれらのページのいくつかがあり、「localhost」から呼び出すことができます。彼らは正確な最後の修正日を提供し、UbuntuバージョンとMacintoshバージョンの間のいくつかのWebページを比較しました。
何が起こっているのか知っている人はいますか?以下は、LastModifiedの時間部分を省略し、日付部分のみを返すために使用するJavaScriptです。
Last modified:
<script language="JavaScript">
var testlast=document.lastModified;
testlast=testlast.substr(0,10);
document.write(" "+testlast);
</script>
Ubuntuでは、次のようになります。
Last Modified: 09/02/2018
私のMacではまだ次のように生成します。
Last modified: 08/28/2017
答え1
私は他のサーバー(ブラウザのローカルまたは外部)から「最後の修正日」を取得する問題に対する解決策を見つけたと思います。秘訣は、html文書でSSI(Server Side Instructions)とJavascriptを組み合わせることです。以下は、文書のほぼすべての場所に挿入できるコードです。
Last modified:
<script language="JavaScript">
var tconfig = '<!--#config timefmt="%m-%d-%Y" --><!--#echo var="LAST_MODIFIED" -->';
var testlast=document.lastModified;
var tsize=tconfig.length;
if ((tsize > 20) || (tsize < 2))
{ document.write(" "+testlast.substr(0,10)); }
else document.write(" "+tconfig);
</script><br />
サーバーが文書をインポートすると、SSIディレクティブが実行され、結果の値がディレクティブに置き換えられます。したがって、tconfigはアポストロフィ内の文字列になります。 SSI命令が実行されない場合、命令を含むコメント(長い文字列)は保持されます。変数セットには文字列サイズがあり、クライアント(ブラウザ)がJavaScriptを実行したときにテストできます。合理的な範囲内にある場合は、サーバーが決定した「最後の変更日」でなければなりません。そうでない場合、Javascriptは変数「testlast」でそれを決定しようとします。 testlastのサブストリングまたは「tconfig」の値が出力されます。さらに悪いことは、Javascriptのtestlast変数から今日の日付を取得できることです。
私は「最終修正:」を表示したいすべての文書にこのパッチを使用します。ところで、SSIコードではダッシュを使用し、Javascriptコードではスラッシュ(デフォルトの区切り文字)を使用しました。これにより、どのメカニズムが価値を提供するかを簡単に区別できます。