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