Problem with document.lastModified in Mozilla

Discussion in 'Javascript' started by Bart, Feb 1, 2004.

  1. Bart

    Bart Guest

    Hallo,

    I'm have a problem with the following script:


    function wr(s)
    {
    //Just got tired of writing document.write,
    //so I created a shorthand version
    document.write(s);
    }


    function lm()
    {
    //I know this can be shorter but the original script
    //tried to format the outputstring, wichh did not
    //work in Mozilla, so I commented a lot out
    //and this is what's left of it...
    var s = document.lastModified;
    return s;
    }

    function lmstring()
    {
    var s = "This page was last modified at: ";
    s += lm();
    s += ".";
    return s;
    }


    <html>

    ...

    <script type="text/JavaScript">
    <!--
    wr(lmstring());
    // -->
    </script>

    ....
    </html>


    This _should_ return the date and time the document was last modified
    (saved), however in Mozilla (1.4; Windows ME) it will return the
    actual current date and time (as if I'd used "new Date()").
    In IE (5.50) it behaves as I expect.

    What am I doing wrong (or is it a Mozilla bug ???).

    (The script is in an external .js file, if that should make any
    difference)
    --
    Bart Broersma

    (ff _ANTISPAM_ wegpoetsen uit dit adres natuurlijk)
    Bart, Feb 1, 2004
    #1
    1. Advertising

  2. JRS: In article <>, seen in
    news:comp.lang.javascript, Bart <>
    posted at Sun, 1 Feb 2004 18:30:26 :-
    >
    >This _should_ return the date and time the document was last modified
    >(saved), however in Mozilla (1.4; Windows ME) it will return the
    >actual current date and time (as if I'd used "new Date()").
    >In IE (5.50) it behaves as I expect.
    >
    >What am I doing wrong (or is it a Mozilla bug ???).


    For testing, and even more so for getting advice, throw all that code
    away. It wastes our time.

    document.write('"', document.lastModified, '"')

    can be understood immediately, and shows exactly what the string
    contains.

    By reading the FAQ, you could have found
    <URL:http://www.merlyn.demon.co.uk/js-date3.htm#lM>, q.v.


    You do not say whether you are accessing the file as a file on your
    local disc, as a Web page but from a server on your computer, or as a
    Web page from a remote server.



    The HTTP header line Last-Modified is well-specified; and I suspect
    that, where implemented, it is correctly implemented.

    But the javascript document.lastModified string appears to be totally
    unspecified, or differently specified in different DOMs. If it is to be
    correctly interpreted by all browsers, world-wide, it must be carefully
    treated.

    The reliable, sensible, economical easy approach is to write the date,
    in an international standard form, in HTML on the page, and to update it
    when you edit the page significantly. Like I do.


    Consider

    if (new Date() - (D = new Date(document.lastModified)) > 3e4)
    LMdisplay(document.lastModified)

    Remember that the string may be GMT.

    --
    © John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
    <URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
    <URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
    <URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
    Dr John Stockton, Feb 2, 2004
    #2
    1. Advertising

  3. Bart

    @SM Guest

    Bart a ecrit :
    >
    > Hallo,
    >
    > I'm have a problem with the following script:


    function wr() { document.write(lmstring()); }


    > function wr(s)
    > {
    > //Just got tired of writing document.write,
    > //so I created a shorthand version
    > document.write(s);
    > }
    >
    > function lm()
    > {
    > //I know this can be shorter but the original script
    > //tried to format the outputstring, wichh did not
    > //work in Mozilla, so I commented a lot out
    > //and this is what's left of it...
    > var s = document.lastModified;
    > return s;
    > }
    >
    > function lmstring()
    > {
    > var s = "This page was last modified at: ";
    > s += lm();
    > s += ".";
    > return s;
    > }
    >
    > <html>
    >
    > ..
    >
    > <script type="text/JavaScript">
    > <!--
    > wr(lmstring());
    > // -->
    > </script>
    >
    > ...
    > </html>
    >
    > This _should_ return the date and time the document was last modified
    > (saved), however in Mozilla (1.4; Windows ME) it will return the
    > actual current date and time (as if I'd used "new Date()").
    > In IE (5.50) it behaves as I expect.
    >
    > What am I doing wrong (or is it a Mozilla bug ???).
    >
    > (The script is in an external .js file, if that should make any
    > difference)
    > --
    > Bart Broersma
    >
    > (ff _ANTISPAM_ wegpoetsen uit dit adres natuurlijk)


    --
    ******** (enlever/remove [OTER_MOI] du/from reply url) *******
    Stéphane MORIAUX : mailto:
    Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
    http://perso.wanadoo.fr/stephane.moriaux/internet/
    **************************************************************
    @SM, Feb 2, 2004
    #3
  4. Bart

    Bart Guest

    On Mon, 02 Feb 2004 17:34:38 +0100 "@SM" wrote:
    <>:


    >function wr() { document.write(lmstring()); }

    Actually I use the wr() function in all my pages instead of
    document.write, so this won't solve anything for me.
    >
    >


    I think you misunderstood my question.
    As fa as I can trace, document.lastModified does not return the date
    the document was last modified, but the actual current date & time...

    Bart
    --
    Bart Broersma

    (ff _ANTISPAM_ wegpoetsen uit dit adres natuurlijk)
    Bart, Feb 2, 2004
    #4
  5. Bart

    Bart Guest

    Problem with document.lastModified in Mozilla (Revisited...)

    Op Sun, 01 Feb 2004 18:30:26 +0100 schreef Bart
    <>:

    Just tested this (Mozilla 1.4 on Windows ME)

    <script type="text/JavaScript">
    <!--
    document.write(document.lastModified);
    // -->
    </script>

    This will return the actual time and date of my computer clock, _NOT_,
    as one should ecxpect, the date & time the document was last modified.

    (saved the HTML opened in browser: gave me "february 02, 18:36";
    then changed computer clock to december 2nd 2004, reloaded the page
    and it gave me "december 02, 2004 18:36" ....)

    Netscape 6.0 behaves correctly on the same script...

    Can anyone reproduce this ????

    Bart
    --
    Bart Broersma

    (ff _ANTISPAM_ wegpoetsen uit dit adres natuurlijk)
    Bart, Feb 2, 2004
    #5
  6. Re: Problem with document.lastModified in Mozilla (Revisited...)

    "Bart" <> wrote in message
    news:...
    <snip>
    >This will return the actual time and date of my computer
    >clock, _NOT_, as one should ecxpect, the date & time the
    >document was last modified.

    <snip>
    > Can anyone reproduce this ????


    The browser gets its last modified date from the HTTP headers sent with
    the HTML when it is downloaded, and only if the server sends that
    information. When testing from the file system there are no HTTP
    headers, IE may know how to get the information from the (Microsoft) OS;
    Mozilla may not (or care to try).

    If you want to see if the problem is reproducible you will have to go
    into more details on the context. Perhaps a URL to a test file on a
    server somewhere.

    Richard.
    Richard Cornford, Feb 2, 2004
    #6
  7. Bart

    @SM Guest

    Bart a ecrit :
    >
    > On Mon, 02 Feb 2004 17:34:38 +0100 "@SM" wrote:
    > <>:
    >
    > As fa as I can trace, document.lastModified does not return the date
    > the document was last modified, but the actual current date & time...


    If document is not on a server your experencies are of no interest.

    On My Mac IE and NC doesn't give same date/hour.

    Of course, I didn't try playing with the computer clock !
    Some secondes or minutes of waiting is enough to see it is realy
    a last time modified, even if the time is false ...

    --
    ******** (enlever/remove [OTER_MOI] du/from reply url) *******
    Stéphane MORIAUX : mailto:
    Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
    http://perso.wanadoo.fr/stephane.moriaux/internet/
    **************************************************************
    @SM, Feb 2, 2004
    #7
  8. Bart

    Bart Guest

    Re: Problem with document.lastModified in Mozilla (Revisited...)

    Op Mon, 2 Feb 2004 18:37:06 -0000 schreef "Richard Cornford"
    <>:

    >"Bart" <> wrote in message
    >news:...
    ><snip>
    >>This will return the actual time and date of my computer
    >>clock, _NOT_, as one should ecxpect, the date & time the
    >>document was last modified.

    ><snip>
    >> Can anyone reproduce this ????

    >
    >The browser gets its last modified date from the HTTP headers sent with
    >the HTML when it is downloaded, and only if the server sends that
    >information. When testing from the file system there are no HTTP
    >headers, IE may know how to get the information from the (Microsoft) OS;
    >Mozilla may not (or care to try).
    >
    >If you want to see if the problem is reproducible you will have to go
    >into more details on the context. Perhaps a URL to a test file on a
    >server somewhere.
    >
    >Richard.
    >


    The behaviour is the same on a server (my homepage) or on my local
    computer.
    I recently tested the same page in Mozilla 1.2.1 and it behaved
    normally. (I seem to remeber that Mozilla 1.3 also behaved as I
    expected, since I tested all my pages under Mozilla 1.3, before
    upgrading to 1.4).

    This seems odd...

    Thanx anyway !

    Bart

    --
    Bart Broersma

    (ff _ANTISPAM_ wegpoetsen uit dit adres natuurlijk)
    Bart, Feb 3, 2004
    #8
  9. Bart

    Bart Guest

    Op Mon, 02 Feb 2004 22:10:17 +0100 schreef "@SM"
    <>:


    >If document is not on a server your experencies are of no interest.


    Checked it. You're right (that is today, yesterday I checked and it
    wasn't. Same file, same Browser). Then again, it's always nice to
    blame Bill if my computer behaves badly ;-)


    However Mozilla 1.2.1 did this allright.
    The site I'm working on will be a gift to some friends, and will be on
    a CDROM.
    (Anyhow most of them use IE, and they will see the proper date. It's
    just that I prefer Mozilla, and it would be nice to show the date of
    last modification in Mozilla as well...)

    Thanks!

    Bart

    --
    Bart Broersma

    (ff _ANTISPAM_ wegpoetsen uit dit adres natuurlijk)
    Bart, Feb 4, 2004
    #9
  10. Bart

    rgee_f Guest

    Bart <> wrote in message news:<>...
    > Op Mon, 02 Feb 2004 22:10:17 +0100 schreef "@SM"
    > <>:
    >
    >
    > >If document is not on a server your experencies are of no interest.

    >
    > Checked it. You're right (that is today, yesterday I checked and it
    > wasn't. Same file, same Browser). Then again, it's always nice to
    > blame Bill if my computer behaves badly ;-)
    >
    >
    > However Mozilla 1.2.1 did this allright.
    > The site I'm working on will be a gift to some friends, and will be on
    > a CDROM.
    > (Anyhow most of them use IE, and they will see the proper date. It's
    > just that I prefer Mozilla, and it would be nice to show the date of
    > last modification in Mozilla as well...)
    >
    > Thanks!
    >
    > Bart



    Bart:

    I have run into this problem where the page is displaying the current
    time...this is driving me nuts. I read your thread and it looks like
    you solved it but am unclear as to how this was done.

    I have an external file that looks like this:

    var day = new Array
    ("Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday");

    var mon = new Array
    ("January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December");

    var now = new Date();
    var last_mod = new Date(document.lastModified);
    var mod_month = mon[now.getMonth()];
    var mod_date = last_mod.getDate();
    var mod_hour = last_mod.getHours();
    var mod_minute = last_mod.getMinutes();
    var mod_second = last_mod.getSeconds();
    var mod_year = last_mod.getYear();
    if (mod_year < 2000) {
    var mod_year = mod_year + 1900 //because netscape does not evaluate
    date properly
    }

    My html page looks like this:
    <html>
    <head>
    <script src="my_lastModDate.js" type="text/javascript">
    </script>
    <title>
    </title>
    </head>
    <body>
    blah, blah, and more blah...
    <SCRIPT TYPE="TEXT/JAVASCRIPT">
    <!-- Hide

    document.write ("Last modified on: <br>");
    document.write (mod_month + " " + mod_date + "\, " + mod_year);
    document.write(" " + mod_hour + ":" + mod_minute + ":" +
    mod_second);

    -->
    </SCRIPT>

    </body>
    </html>

    TIA,
    rgee_f
    rgee_f, Feb 5, 2004
    #10
  11. JRS: In article <>, seen
    in news:comp.lang.javascript, rgee_f <> posted at
    Thu, 5 Feb 2004 12:47:22 :-
    >
    >I have run into this problem where the page is displaying the current
    >time...this is driving me nuts.




    Showing all that code is largely pointless - the prime question is "what
    does the lastModified string itself hold?".

    If it holds some version of the current date/time, even in FFF, then one
    cannot hope to re-interpret it as anything else.

    If it holds a date/time equivalent to 1970-01-01 00:00:00 GMT, even in
    FFF, then one cannot hope to re-interpret it as anything else.

    If it holds a date/time which is reasonable for a Web page, i.e. after
    TB-L's invention but appreciably before current, even in FFF, then one
    can hope to re-interpret it as a respectable representation of that.

    The re-interpretation code can, and should, be tested independently, on
    other date strings of expected formats,



    BTW, what happens with pages generated dynamically on the server - do
    they have a Last-Modified header representing the instant of generation,
    or something else, or not?

    --
    © John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
    <URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
    <URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
    <URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
    Dr John Stockton, Feb 6, 2004
    #11
  12. Bart

    rgee_f Guest

    Dr John Stockton <> wrote in message news:<>...
    > JRS: In article <>, seen
    > in news:comp.lang.javascript, rgee_f <> posted at
    > Thu, 5 Feb 2004 12:47:22 :-
    > >
    > >I have run into this problem where the page is displaying the current
    > >time...this is driving me nuts.

    >
    >
    >
    > Showing all that code is largely pointless - the prime question is "what
    > does the lastModified string itself hold?".
    >
    > If it holds some version of the current date/time, even in FFF, then one
    > cannot hope to re-interpret it as anything else.
    >
    > If it holds a date/time equivalent to 1970-01-01 00:00:00 GMT, even in
    > FFF, then one cannot hope to re-interpret it as anything else.
    >
    > If it holds a date/time which is reasonable for a Web page, i.e. after
    > TB-L's invention but appreciably before current, even in FFF, then one
    > can hope to re-interpret it as a respectable representation of that.
    >
    > The re-interpretation code can, and should, be tested independently, on
    > other date strings of expected formats,
    >
    >
    >
    > BTW, what happens with pages generated dynamically on the server - do
    > they have a Last-Modified header representing the instant of generation,
    > or something else, or not?



    John:

    Thanks for the reply. As far as I can tell the lastModified string is
    hoding current and time. I am sorry but I really feel stupid because
    I really do not quite understand your three above 'if'
    statements...When I run my lastModified code and press the reload
    button I can see the seconds ticking away. If I leave the page alone
    for a day it will display the current date and time. I went to your
    page and am still unclear if this is a coding problem or a server
    problem, in that the server is not sending HTTP header data back to
    the browser...

    TIA.
    rgee_f
    rgee_f, Feb 9, 2004
    #12
  13. JRS: In article <>, seen
    in news:comp.lang.javascript, rgee_f <> posted at
    Mon, 9 Feb 2004 08:55:09 :-

    >Thanks for the reply. As far as I can tell the lastModified string is
    >hoding current and time. I am sorry but I really feel stupid because
    >I really do not quite understand your three above 'if'
    >statements...When I run my lastModified code and press the reload
    >button I can see the seconds ticking away. If I leave the page alone
    >for a day it will display the current date and time. I went to your
    >page and am still unclear if this is a coding problem or a server
    >problem, in that the server is not sending HTTP header data back to
    >the browser...



    A confusing report.

    What you need to do is to put the following code on your server at a
    known time of day, wait for at least a few times as long as the largest
    possible difference between server time and real time, then fetch the
    page and show us the exact result, the time of upload, and the time of
    fetch.

    You need also to say, unless looking at the result tells you all you
    need to know, how your own local time differs from GMT; and, in case
    your server is wrongly configured, it could be useful to know server's
    local time difference from GMT. Always give locality information in any
    case where it may matter.

    <script>
    document.write('Result: "', document.lastModified, '"')
    </script>

    Using my test page locally, I get Result: "02/09/04 19:53:54" which
    is, in American, exactly when the page was changed.

    I expect that the string will always represent a GMT time, and that it
    may contain the letters GMT.

    You may get the time of upload by the server clock, the time of fetch by
    your computer's clock, "0", "", or something unpredictable (I don't
    expect "0" or "", if I understand you correctly.

    There is NO POINT in examining this string with any more code until the
    string itself is understood.


    You could, of course, also tell us all the URL of the page, so that we
    can look at it.


    IIRC, you can check the page with http://malch.elsop.com/quick.cgi -
    IIRC, the full report includes the headers, and may show a Last
    Modified: line.

    --
    © John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
    <URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
    <URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
    <URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
    Dr John Stockton, Feb 9, 2004
    #13
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. *.*

    document.lastModified

    *.*, May 1, 2004, in forum: Javascript
    Replies:
    12
    Views:
    313
    Thomas 'PointedEars' Lahn
    May 19, 2004
  2. Kam Bansal
    Replies:
    2
    Views:
    135
    Dr John Stockton
    Aug 3, 2004
  3. JellyON

    document.lastModified

    JellyON, Nov 15, 2005, in forum: Javascript
    Replies:
    17
    Views:
    275
    John W. Kennedy
    Nov 27, 2005
  4. Dr John Stockton
    Replies:
    0
    Views:
    130
    Dr John Stockton
    Aug 4, 2006
  5. document.lastModified help

    , Jun 2, 2008, in forum: Javascript
    Replies:
    2
    Views:
    133
    Jeremy
    Jun 2, 2008
Loading...

Share This Page