Skip to content

Instantly share code, notes, and snippets.

@fearphage
Forked from edvakf/defer_async_script.js
Created March 22, 2011 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save fearphage/881274 to your computer and use it in GitHub Desktop.
Save fearphage/881274 to your computer and use it in GitHub Desktop.
async/defer support for Opera
// ==UserScript==
// @name defer/async for Opera
// @namespace http://d.hatena.ne.jp/edvakf/
// @license Public Domain
// ==/UserScript==
(function(window, document, opera) {
function load_script(script, attr) {
return function() {
var script2 = script.cloneNode(true);
script2.removeAttribute(attr);
script.parentNode.insertBefore(script2, script);
script.parentNode.removeChild(script);
};
}
var asyncSupport = 'async' in document.createElement('script');
// support async and defer
opera.addEventListener('BeforeExternalScript', function(e) {
var script = e.element;
if (!asyncSupport && script.hasAttribute('async')) {
setTimeout(load_script(script, 'async'), 10);
return e.preventDefault();
}
if (script.hasAttribute('defer') && document.readyState != 'complete') {
window.addEventListener('load', load_script(script, 'defer'), false);
return e.preventDefault();
}
}, false);
})(this, this.document, this.opera);
@webkeke
Copy link

webkeke commented Aug 22, 2016

Hello, this code need to penetrate the parameters? Or can be directly used?

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