Thanks for your suggestion! (And sorry for the botched subject line!)
Kynn
On Tue, Oct 7, 2008 at 8:03 AM, Rene Veerman <[EMAIL PROTECTED]> wrote:
>
> 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
>>
>>
>>
>