How to detect when a link is clicked

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mat

    #1

    How to detect when a link is clicked

    How can I detect when a link has been clicked but the new page is
    still in the process of loading? The document.locati on.href property
    still displays the current location (understandably ) not the one
    that's about to load.

    I have a page that reloads every 30 seconds in order to access live
    data. If a user clicks on a link just prior to the page reloading the
    reload takes precedence over the link click and this is annoying for
    the users. Whe the page is about to reload I want to check to see if a
    link has just been clicked (and therefore a new page is about to load)
    and, if so, cancel the reload

    Any suggestions as to how I can detect this (without having to put and
    onclick in every link) would be appreciated
  • Grant Wagner

    #2
    Re: How to detect when a link is clicked

    Mat wrote:
    [color=blue]
    > How can I detect when a link has been clicked but the new page is
    > still in the process of loading? The document.locati on.href property
    > still displays the current location (understandably ) not the one
    > that's about to load.
    >
    > I have a page that reloads every 30 seconds in order to access live
    > data. If a user clicks on a link just prior to the page reloading the
    > reload takes precedence over the link click and this is annoying for
    > the users. Whe the page is about to reload I want to check to see if a
    > link has just been clicked (and therefore a new page is about to load)
    > and, if so, cancel the reload
    >
    > Any suggestions as to how I can detect this (without having to put and
    > onclick in every link) would be appreciated[/color]

    You have to put it on each an every link, but if the links don't currently
    have onclick events, it isn't that big a deal:

    <body onload="window. reloadTimer =
    setTimeout('win dow.location.re load(true);', 30000);setOnCli ck(onClick);">
    <script type="text/javascript">
    function onClick() {
    if (window.reloadT imer != null) {
    clearTimeout(wi ndow.reloadTime r);
    }
    return true;
    }
    function setOnClick(f) {
    // to minimize page size, rather than defining separate onmouseout events
    for
    // every link, any link without a locally defined onmouseout event is set
    here

    function __setOnClick(dl , f) {
    if (dl) {
    for (var i = 0; i < dl.length; i++) {
    if (dl[i].onclick == null) {
    dl[i].onclick = f;
    }
    }
    }
    } // __setOnClick()


    __setOnClick(do cument.links, f);

    if (document.layer s) {
    var dl = document.layers ;
    for (var i = 0; i < dl.length; i++) {
    if (dl[i] && dl[i].document) {
    __setOnClick(dl[i].document.links , f);
    }
    }
    }
    } // setOnClick()
    </script>
    </body>

    The whole document.layers bit is to support Netscape 4. I just realized it
    should be a recursive call, since you can nest layers within layers, but I
    never do that so I didn't write it that way. If you don't need to support
    Netscape 4, or don't ever use layers in Netscape 4, you could remove that
    bit.

    --
    | Grant Wagner <gwagner@agrico reunited.com>

    * Client-side Javascript and Netscape 4 DOM Reference available at:
    *


    * Internet Explorer DOM Reference available at:
    *
    http://msdn.microsoft.com/workshop/a...ence_entry.asp

    * Netscape 6/7 DOM Reference available at:
    * http://www.mozilla.org/docs/dom/domref/
    * Tips for upgrading JavaScript for Netscape 7 / Mozilla
    * http://www.mozilla.org/docs/web-deve...upgrade_2.html


    Comment

    Working...