1

javascript を使用してリモート URL が最後に更新された日付を取得しようとしています。私は現在これを思いついた:

function getlastmod(url)
{
    var ifrm = document.createElement("IFRAME"); 
    ifrm.setAttribute("src", url);
    ifrm.setAttribute("id", "oIFRAME");
    ifrm.style.display = "none"; 
    var spanTag = document.createElement("span"); 
    spanTag.id = "oSpan"; 
    try 
    {
        var oIFrame = document.getElementById("oIFrame");
        var oSpan = document.getElementById("oSpan");
        oSpan.innerHTML = oIFrame.src + " last modified " +
        oIFrame.document.lastModified;
        outUpdate=oSpan;
    } 
    catch(E) {setTimeout("getlastmod();",50);}
}

ただし、このコードは常に「outUpdate」を「undefined」に変更するようです。このコードは、url コンテンツをフレームにロードし、document.lastModified 関数を使用して最終更新日を取得することになっています。

これを修正する方法についてのアイデアはありますか?

ありがとう!ジョシュ

4

3 に答える 3

1

なぜtry catchステートメントにあるのですか? エラーがスローされると思いますか?あなたは基本的にそれに依存しているからです。outUpdate に初期値を設定していますか? catchステートメントに入ることがありますか?ここで getlastmod() と getLastModified() を機能させる必要があるのはなぜですか? 次のように設定するとどうなりますか。

var outUpdate = "init";
...

...
getlastmod("/");
console.log("outUpdate is: ", outUpdate);
于 2012-07-21T13:45:52.353 に答える
1

要素にアクセスしており、ドキュメントに追加する前に、ブロックの前に次の 2 行を追加する必要がありoIFRAMEます。oSpantry

document.body.appendChild(ifrm);
document.body.appendChild(spanTag);

あなたの idiFrameoIFrameであり、 oIFrameではありません。次の行を置き換えます。

var oIFrame = document.getElementById("oIFrame");

var oIFrame = document.getElementById("oIFRAME");

documentiFrameあなたのオブジェクトのプロパティではありませんcontentDocument。この行を置き換えます

oIFrame.document.lastModified;

oIFrame.contentDocument.lastModified;
于 2012-07-21T13:46:22.050 に答える
0

ページを表示しない場合は、xhr を使用して帯域幅を節約できます。
ここにあなたを動かす何かがあります...

マニフェスト.json

{
  "name": "Get last modified header with XHR.",
  "version": "1.0",
  "permissions": [
    "tabs", "<all_urls>"
  ],
  "browser_action": {
      "default_title": "Get last modified header with XHR.",
      "default_icon": "icon.png",
      "default_popup": "popup.html"
  },
  "manifest_version" : 2
}

popup.html

<html>
  <head>
    <script src="popup.js"></script>
  </head>
  <body style='width : 400px;'>
    <div id="message">Getting File.....</div>
  </body>
</html>

popup.js

var xhr = new XMLHttpRequest();

xhr.open('GET', 'http://www.w3schools.com/jsref/lastmodified.htm', true);

xhr.onerror = function() {
    var message = document.querySelector('#message');
    message.innerText = 'Error getting url';
}

xhr.onreadystatechange = function() {
    // readystate 2, headers recieved
    if (this.readyState == 2){
        var message = document.querySelector('#message');
        if (this.getResponseHeader("Last-Modified")){
            message.innerText = 'Got the headers\n';
            message.innerText += 'Last Last-Modified : ' + this.getResponseHeader("Last-Modified");
        } else {
            message.innerText = 'Got the headers\n';
            message.innerText += 'But there was no Last-Modified\n';
            // If the file doesnt exist your still going to get headers
            message.innerText += 'Or there was an error in getting the file';
        }
        // Make sure you access the headers before this abort, as they wont be available afterwards
        this.abort();
    }
}

xhr.send();
于 2012-07-21T15:56:14.790 に答える