committed fix to ajaxify that caused any newly appended anchors to not be

ajaxified, also tweaked ajaxify so that it only unbinds its own events
instead of clobbering any other events attached to anchors (#futureproof)
v1.18.x
Julian Lam 12 years ago
parent 4edc1cd3ea
commit 2b4e562e21

@ -19,7 +19,7 @@ var ajaxify = {};
content.innerHTML = templates[tpl_url]; content.innerHTML = templates[tpl_url];
exec_body_scripts(content); exec_body_scripts(content);
ajaxify.enableAll();
} }
return true; return true;
@ -28,22 +28,25 @@ var ajaxify = {};
return false; return false;
} }
ajaxify.enableAll = function() {
$('a').unbind('click', ajaxify.enable).bind('click', ajaxify.enable);
}
ajaxify.enable = function(ev) {
var url = this.href.replace(rootUrl +'/', '');
if (ajaxify.go(url)) {
ev.preventDefault();
return false;
}
}
$('document').ready(function() { $('document').ready(function() {
if (!window.history || !window.history.pushState) return; // no ajaxification for old browsers if (!window.history || !window.history.pushState) return; // no ajaxification for old browsers
content = content || document.getElementById('content'); content = content || document.getElementById('content');
$('a').unbind('click').bind('click', function(ev) { ajaxify.enableAll();
var url = this.href.replace(rootUrl +'/', '');
if (ajaxify.go(url)) {
ev.preventDefault();
return false;
}
});
}); });
function exec_body_scripts(body_el) { function exec_body_scripts(body_el) {
@ -54,27 +57,26 @@ var ajaxify = {};
// Argument body_el is an element in the dom. // Argument body_el is an element in the dom.
function nodeName(elem, name) { function nodeName(elem, name) {
return elem.nodeName && elem.nodeName.toUpperCase() === return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
name.toUpperCase();
}; };
function evalScript(elem) { function evalScript(elem) {
var data = (elem.text || elem.textContent || elem.innerHTML || "" ), var data = (elem.text || elem.textContent || elem.innerHTML || "" ),
head = document.getElementsByTagName("head")[0] || head = document.getElementsByTagName("head")[0] ||
document.documentElement, document.documentElement,
script = document.createElement("script"); script = document.createElement("script");
script.type = "text/javascript"; script.type = "text/javascript";
try { try {
// doesn't work on ie... // doesn't work on ie...
script.appendChild(document.createTextNode(data)); script.appendChild(document.createTextNode(data));
} catch(e) { } catch(e) {
// IE has funky script nodes // IE has funky script nodes
script.text = data; script.text = data;
} }
head.insertBefore(script, head.firstChild); head.insertBefore(script, head.firstChild);
head.removeChild(script); head.removeChild(script);
}; };
// main section of function // main section of function

Loading…
Cancel
Save