Hi Caleb,

ok, the project seems to complex to strip out some parts and run them
individually.
Anyway, I looked at the sources and they look quite ok to me.

Sorry, that I can't help more with this.
Just a hint, you could try to add some debug outputs to your code and
comment out some parts until you identify the function causing the
problems.
e.g.:
if ($('#' + element).val() != LiveSaver.data[LiveSaver.page][element]) {
  $('<span>saved</span>')
      .insertAfter('#' + element)
      .fadeOut("slow", function(){$(this).remove();});
// LiveSaver.add(element, $('#' + element).val());
// LiveSaver.save();
}

by(e)
Stephan


2009/2/3 morse.caleb <morse.ca...@gmail.com>:
>
> Sure, here you go
>
> // begin code //
>
> var cookie_name = 'WP_LiveSaver',
>        element = 'wpTextbox1';
>
> var LiveSaver = {
>        init: function() {
>                this.lastSave = (new Date()).getTime();
>
>                var wikiSection = window.location.href.match(/section=\d+/),
>                        wikiPage = wgTitle;
>
>                if(!wikiPage) {
>                        return false;
>                } else {
>                        if(wikiSection) {
>                                wikiPage += '&' + wikiSection[0];
>                        }
>                }
>
>                this.page = wikiPage;
>
>                this.data = {};
>
>                // Add icon to the top left corner of window
>                $('#p-personal div.pBody ul').append('<li id="LiveSaverIcon"></
> li>');
>
>                this.cookie = new LiveSaverCookie();
>                var tmpData = JSON.parse(this.cookie.load());
>                if(tmpData) {
>                        this.data = tmpData;
>                }
>
>                // Check if extension is disabled or enabled
>                if(typeof this.data.enabled === 'undefined' || 
> this.data.enabled ===
> true) {
>                        this.enable();
>                } else {
>                        this.disable();
>                }
>        },
>
>        enable: function() {
>                // Set save threshold to 2.5 seconds
>                this.saveThreshold = 2500;
>
>                $('#LiveSaverIcon')
>                        .css('background-position', '0 center')
>                        .attr('title', 'LiveSaver ' + LiveSaver_version + ' 
> Click to
> disable');
>
>                if(!this.data[this.page]) {
>                        this.data[this.page] = {};
>                }
>                if(!this.data[this.page][element]) {
>                        this.data[this.page][element] = '';
>                }
>                if(!this.data[this.page]['rev']) {
>                        this.data[this.page]['rev'] = '';
>                }
>
>                this.data.enabled = this.enabled = true;
>                this.save();
>        },
>
>        disable: function() {
>
>                // Set very high save threshold to save browser resources
>                this.saveThreshold = 5000000;
>
>                $('#LiveSaverIcon')
>                        .css('background-position', '-16px center')
>                        .attr('title', 'LiveSaver ' + LiveSaver_version + ' 
> Click to
> enable');
>
>                // Remove all existing data
>                this.data = {};
>
>                this.data.enabled = this.enabled = false;
>                this.save();
>        },
>
>        register: function() {
>
>                // The readonly attribute is set when the current user doesn't 
> have
> access to editing the current page.
>                if($('#' + element).attr('readonly') === true) {
>                        return;
>                }
>
>                // Check if this page has been previously saved in the cookie
>                if(this.enabled === true && this.has(element)) { //get saved 
> data
>                        var value = this.get(element);
>
>                        if($('#' + element).val() != value) {
>                                if(this.data[this.page]['rev'] != 
> wgCurRevisionId) {
>                                        $('#editform').before('<div 
> id="notice"><p>This page has changed
> since you started editing it.</p></div>');
>                                        return;
>                                } else {
>
>                                        // Append warning message
>                                        $('#editform').before('<div 
> id="notice"><p>There is an autosave
> of this page that is more recent than the version below. <a href=""
> id="LiveSaver_Restore">Restore old version</a>.</p></div>');
>
>                                        // Wait for user to decide to move to 
> new version.
>                                        
> $('#LiveSaver_Restore').click(function(e) {
>                                                // Prevent link from being 
> followed
>                                                e.preventDefault();
>
>                                                // Replace text
>                                                $('#' + 
> element).val(LiveSaver.get(element));
>
>                                                // Remove notice
>                                                $('#notice').remove();
>                                        });
>                                }
>                        }
>                }
>
>                // Watch for multiple events in the textbox
>                $('#' + element).bind('keyup focus blur', function() {
>
>                        // Check if enough time has passed
>                        if(LiveSaver.enabled === true && ((new 
> Date()).getTime() -
> LiveSaver.lastSave) > LiveSaver.saveThreshold) {
>                                // Update last saved time
>                                LiveSaver.lastSave = (new Date()).getTime();
>
>                                // Only save if textbox has changed since last 
> save
>                                if($('#' + element).val() != 
> LiveSaver.data[LiveSaver.page]
> [element]) {
>                                        LiveSaver.add(element, $('#' + 
> element).val());
>                                        LiveSaver.save();
>                                }
>                        }
>                });
>        },
>
>        save: function() {
>                var json = JSON.stringify(this.data);
>                this.cookie.save(json);
>        },
>
>        add: function(key, val) {
>                // Save everythng that is in the form
>                this.data[this.page][key] = val;
>
>                // Save revision id
>                this.data[this.page]['rev'] = wgCurRevisionId;
>        },
>
>        get: function(key) {
>                if(this.has(key)) {
>                        return this.data[this.page][key];
>                } else {
>                        return false;
>                }
>        },
>
>        reset: function() {
>                if(this.data[this.page][element]) {
>                        this.data[this.page][element] = '';
>                }
>                if(this.data[this.page]['rev']) {
>                        this.data[this.page]['rev'] = '';
>                }
>
>                this.save();
>        },
>
>        has: function(key) {
>                if(this.data[this.page][key].length > 0) {
>                        return true;
>                } else {
>                        return false;
>                }
>        }
> };
>
> var LiveSaverCookie = function(e) {
>        this.save = function(data) {
>                $.cookie(cookie_name, escape(data), { expires: 1000 });
>        };
>
>        this.load = function() {
>                return unescape($.cookie(cookie_name));
>        };
> };
>
> function LiveSaver_init() {
>        LiveSaver.init();
>
>        LiveSaver.register();
>
>        $('#LiveSaverIcon').live('click', function(event) {
>                // event.which tells us which mouse button was used, 1 is the 
> left
> mouse button
>                if(event.which === 1) {
>                        if(LiveSaver.enabled === true) {
>                                LiveSaver.disable();
>                        } else {
>                                LiveSaver.enable();
>                        }
>                }
>        });
>
>        // Reset when the Cancel or submit button is clicked
>        $('#wpSave, #editform .editHelp a:contains("Cancel")').click(function
> () {
>                LiveSaver.reset();
>        });
>
>        // Save changes before moving to next page
>        $('#wpPreview, #wpDiff').click(function() {
>                LiveSaver.add(element, $('#' + element).val());
>                LiveSaver.save();
>        });
> }
>
> // Set LiveSaver_init to run after page has finished loading
> addOnloadHook(LiveSaver_init);
>
> // End code //
>
> On Feb 3, 3:04 am, Stephan Veigl <stephan.ve...@gmail.com> wrote:
>> Hi Caleb,
>>
>> Could you please post your LiveSaver object and the element variable
>> initialization as well.
>> I tested your code with a more or less meaningful dummy implementation
>> of LiveSaver and element and it works for me in: FF3, Chrome1, Opera9,
>> IE8
>>
>> I guess the problem is either in LiveSaver.add() or LiveSaver.save().
>>
>> by(e)
>> Stephan
>>
>> 2009/2/3 Caleb Morse <morse.ca...@gmail.com>:
>>
>> > I am having trouble getting this piece of code to work correctly in Chrome.
>> > It works just fine in in IE7, IE8, and FF. Watching the Chrome javascript
>> > console doesn't reveal anything useful.
>> > I manually checked each value in the if statements, and they are all coming
>> > back true.
>> > The textbox is not created or changed using javascript so I shouldn't need
>> > to use .live.
>>
>> > $('#textbox').bind('keyup focus blur', function() {
>> > if(LiveSaver.enabled === true && ((new Date()).getTime() -
>> > LiveSaver.lastSave) > LiveSaver.saveThreshold) {
>>
>> > LiveSaver.lastSave = (new Date()).getTime();
>> > if($('#' + element).val() != LiveSaver.data[LiveSaver.page][element]) {
>> > LiveSaver.add(element, $('#' + element).val());
>> > LiveSaver.save();
>> > }
>> > }
>> > });
>> > -- Caleb

Reply via email to