Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
!function() {
var doc = document,
htm = doc.documentElement,
lct = null, // last click target
nearest = function(elm, tag) {
while (elm && elm.nodeName != tag) {
elm = elm.parentNode;
return elm;
// Listeners for our most common interations
htm.onclick = function(e) {
e = e || window.event;
lct = || e.srcElement;
var elem = nearest(lct, 'A') || htm,
href = elem.getAttribute('ajaxify') || elem.href;
switch (elem.rel) {
case 'dialog':
case 'dialog-post':
Bootloader.loadComponents('dialog', function() {
Dialog.bootstrap(href, null, elem.rel == 'dialog');
case 'async':
case 'async-post':
Bootloader.loadComponents('async', function() {
AsyncRequest.bootstrap(href, elem);
return false;
htm.onsubmit = function(e) {
e = e || window.event;
var elem = || e.srcElement;
if (!elem || elem.nodeName != 'FORM' || !elem.getAttribute('ajaxify')) {
Bootloader.loadComponents('dom-form', function() {
bootstrap_form(elem, lct);
return false;
// Remove the no JS class, if it is here
htm.className = htm.className.replace('no_js', '');
Copy link

jdalton commented Aug 4, 2010

@tomochino - Thanks for the additional info

@makinde - Ok cool, I was doing a reduced test with return false and noticed the issue but my usage was not in line with your implementation.
You guys return as the default path of the switch statement which avoids the return false below it :D

Copy link

criso commented Aug 6, 2010

wow. Very elegant solution. Freakin' awesome!

Copy link

hmschreiner commented May 8, 2015

Nowadays, this code still being a good solution?

Copy link

AceMood commented Nov 17, 2015

I think load javascript dynamically is a key rule of performance optimization forever, it's never outdate.
The Web is absolutely a resource enhanced Web, more and more javascript and css could load in an single page as time past, and the usage of memory increased continuously. We can choose a point to reload the page one time, but before that point, partial refresh and load on demand is necessary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment