add a global variable somewhere that your onready callback checks? if true: execute, if false:dont.
then manipulate that global var instead of the callback itself?

Kynn Jones wrote:
I have a jQuery-based script that performs some updates on the current page (using the load method), and eventually visits a second page, by resetting window.location.

This works fine, but if the user hits the back button, the whole sequence is repeated, including the re-loading of the second page.

I'd like to prevent this behavior.  Is it possible?

I tried removing the script with $( 'script[src*=/path/to/script]' ).remove(), but this did not prevent the whole sequence from running again.

Then I thought that the reason for this was that using remove() does not get rid of the callback that was originally installed at the very end of the script with jQuery( MyScript.sleep ). So I tried to uninstall the callback with $( 'document' ).unbind( 'ready', ... ), but this didn't do anything either.

How can uninstall the onready callback? If this is not possible, is there some other way that I can block the sequence from running a second time when the user the BACK button?

The script has the following form:

var MyScript = ( function ( $ ) {
  var SELF_URL = location.pathname + location.search;

  var $$; $$ = {
    check: function () {
      if ( $$.results_ready() ) {
        $( 'script[src*=/path/to/script]' ).remove();
        $( 'document' ).unbind( 'ready', $$.sleep );  // is this right???
        window.location = SELF_URL + '&results=1';
      }
      else {
        $$.sleep();
      }
    },

    sleep: function () {
      setTimeout( $$.refresh, 2000 );
    },

    refresh: function () {
      $( 'body' ).load( SELF_URL, $$.check );
    },

    results_ready: function () {
      // etc., etc.
    }
  };

  return $$;
} )( jQuery );

jQuery( MyScript.sleep );



Thanks in advance!

Kynn



Reply via email to