Skip to content

Instantly share code, notes, and snippets.

@ryaninvents
Last active August 29, 2015 14:16
Show Gist options
  • Save ryaninvents/835d1c57cffd21eca7ba to your computer and use it in GitHub Desktop.
Save ryaninvents/835d1c57cffd21eca7ba to your computer and use it in GitHub Desktop.
Script injector
<a href="javascript:(function()%7Bfunction%20callback()%7B(function()%7B%7D)()%7Dvar%20s%3Ddocument.createElement(%22script%22)%3Bs.src%3D%22https%3A%2F%2Fgist.githack.com%2Fbaconscript%2F835d1c57cffd21eca7ba%2Fraw%2Ff9e4453a1b39504030b1590bfa481444706b6475%2Finject.js%22%3Bif(s.addEventListener)%7Bs.addEventListener(%22load%22%2Ccallback%2Cfalse)%7Delse%20if(s.readyState)%7Bs.onreadystatechange%3Dcallback%7Ddocument.body.appendChild(s)%3B%7D)()">Add scripts</a>
;(function(){
var libraries = {
"Lo-Dash": "//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.3.1/lodash.min.js",
"Underscore": "//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js",
"jQuery": "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"
};
function addScript(url, callback)
{
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
if(callback){
script.onreadystatechange = callback;
script.onload = callback;
}
head.appendChild(script);
}
addScript('https://raw.githack.com/Nycto/PicoModal/master/src/picoModal.js', function(){
picoModal('')
.beforeShow(function (modal, event) {
var content = '', elem = modal.modalElem();
Object.keys(libraries).forEach(function(libName){
var src = libraries[libName];
content += '<a class="btn btn--sm script-btn" data-lib-name="'+libName+'" data-script="'+src+'">'+libName+'</a>';
});
elem.innerHTML = content;
elem.style.textAlign = 'center';
console.log(elem.childNodes);
for(var i = 0; i < elem.childNodes.length; i++){
(function(){
var btn = elem.childNodes[i];
btn.onclick = function(){
btn.innerHTML = '...';
addScript(btn.dataset.script, function(){
btn.innerHTML = btn.dataset.libName + ' loaded';
btn.onclick = null;
btn.style.opacity = 0.3;
});
};
})();
}
})
.show();
}, 100);
// styles from mrmrs's "btns.css"
var css='a.script-btn:hover{text-decoration: none;}'+".pico-content .btn,\n.pico-content .btn:link,\n.pico-content .btn:visited {\n border-radius: 0.3em;\n border-style: solid;\n border-width: 1px;\n color: #111;\n display: block;\n font-family: avenir, helvetica, arial, sans-serif;\n letter-spacing: 0.15em;\n margin-bottom: 0.5em;\n padding: 0.5em 0.75em;\n text-decoration: none;\n text-transform: uppercase;\n -webkit-transition: color 0.4s, background-color 0.4s, border 0.4s;\n transition: color 0.4s, background-color 0.4s, border 0.4s;\n cursor: pointer;\n width: 150px;\n}\n.pico-content .btn:hover,\n.pico-content .btn:focus {\n color: #7FDBFF;\n border: 1px solid #7FDBFF;\n -webkit-transition: background-color 0.3s, color 0.3s, border 0.3s;\n transition: background-color 0.3s, color 0.3s, border 0.3s;\n}\n.pico-content .btn:active {\n color: #0074D9;\n border: 1px solid #0074D9;\n -webkit-transition: background-color 0.3s, color 0.3s, border 0.3s;\n transition: background-color 0.3s, color 0.3s, border 0.3s;\n}\n.pico-content .btn--s {\n font-size: 12px;\n}",
style=document.createElement('style');
if (style.styleSheet)
style.styleSheet.cssText=css;
else
style.appendChild(document.createTextNode(css));
document.getElementsByTagName('head')[0].appendChild(style);
})();
javascript:(function()%7Bfunction%20callback()%7B(function()%7B%7D)()%7Dvar%20s%3Ddocument.createElement(%22script%22)%3Bs.src%3D%22https%3A%2F%2Fgist.githack.com%2Fbaconscript%2F835d1c57cffd21eca7ba%2Fraw%2Ff9e4453a1b39504030b1590bfa481444706b6475%2Finject.js%22%3Bif(s.addEventListener)%7Bs.addEventListener(%22load%22%2Ccallback%2Cfalse)%7Delse%20if(s.readyState)%7Bs.onreadystatechange%3Dcallback%7Ddocument.body.appendChild(s)%3B%7D)()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment