Detectar e injetar jQuery

Como acompanhamento do meu Bookmarklet Protip , muitas vezes precisei verificar se a página tinha jQuery e, se não, injetá-lo.

Então eu encontrei uma solução para isso aqui e modifiquei para atender às minhas necessidades.

Aqui está o meu:

//Check if jQuery is in use.
//Else import it.
(function() {
var otherlib=false,
msg
='';

if(typeof jQuery!='undefined' &&
jQuery
!== null) {
msg
='This page already using jQuery v'+jQuery.fn.jquery;
var evt = document.createEvent("HTMLEvents");
evt
.initEvent("jquery:loaded",true,true);
evt
.msg = msg;
document
.dispatchEvent(evt);
} else if (typeof $=='function') {
otherlib
=true;
}
function getScript(url,success){
var script=document.createElement('script'),
head
=document.getElementsByTagName('head')[0],
done=false;
script
.src=url;
script
.onload=script.onreadystatechange = function(){
if ( !done &&
(!this.readyState ||
this.readyState == 'loaded' ||
this.readyState == 'complete')
) {
done=true;
if(success !== undefined &&
typeof success === "function")
success
();
script
.onload = script.onreadystatechange = null;
head
.removeChild(script);
}
};
head
.appendChild(script);
}

getScript
('http://code.jquery.com/jquery-latest.min.js',function() {

var evt = document.createEvent("HTMLEvents");
if (typeof jQuery=='undefined') {
msg
='Sorry, but jQuery wasn't able to load';
evt
.initEvent("jquery:error",true,true);
evt
.msg = msg;
document
.dispatchEvent(evt);
} else {
msg
='This page is now jQuerified with v' + jQuery.fn.jquery;
if (otherlib) {msg+=' and noConflict(). Use $jq(), not $().';}
evt
.initEvent("jquery:loaded",true,true);
evt
.msg = msg;
document
.dispatchEvent(evt);
}
});
})();

Basicamente, ele verifica se a página está executando o jQuery e, se não, obtém o último do cdn do jquery.

Ele está disparando um evento quando carregado: “jquery: carregado”.

Espero que seja útil. Compartilhe se você pode fazer melhor.
Pode ser necessário um poly-fill para o disparo do evento.