Fix annoying chrome dual-load bug

This commit is contained in:
John Crepezzi 2011-11-28 01:27:41 -05:00
parent 6e2955d60c
commit 1ed980150c
2 changed files with 11 additions and 16 deletions

View File

@ -1,6 +1,5 @@
# TODO for OSS # TODO for OSS
* tests * tests
* fix that chrome bug where it loads the doc twice
* Add file extensions ourselves to push state * Add file extensions ourselves to push state
* add feedback for errors to UI - esp. too long * add feedback for errors to UI - esp. too long
* make sure file store still functions appropriately * make sure file store still functions appropriately

View File

@ -19,22 +19,18 @@
// Handle pops // Handle pops
var handlePop = function(evt) { var handlePop = function(evt) {
var path = evt.target.location.pathname; var path = evt.target.location.pathname;
if (path === '/') { if (path === '/') { app.newDocument(true); }
app.newDocument(true); else { app.loadDocument(path.substring(1, path.length)); }
}
else {
app.loadDocument(path.substring(1, path.length));
}
}; };
// If pop before loading jquery, delay load // Set up the pop state to handle loads, skipping the first load
// to make chrome behave like others:
// http://code.google.com/p/chromium/issues/detail?id=63040
setTimeout(function() {
window.onpopstate = function(evt) { window.onpopstate = function(evt) {
try { try { handlePop(evt); } catch(err) { /* not loaded yet */ }
handlePop(evt);
} catch(err) {
// not loaded yet
}
}; };
// Construct app and load if not loaded }, 1000);
// Construct app and load initial path
$(function() { $(function() {
app = new haste('hastebin', { twitter: true }); app = new haste('hastebin', { twitter: true });
handlePop({ target: window }); handlePop({ target: window });