aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorThomas Endres <Thomas-Endres@gmx.de>2013-11-10 16:16:49 +0100
committerThomas Endres <Thomas-Endres@gmx.de>2013-11-19 20:56:51 +0100
commitffd8ccbffabdeb359ef2e32b5b1e792adfb257d4 (patch)
treeeb9e2b87d4835379e8c710eb50a3ca473a004333 /js
parent0ffbe8d09cbc48d750c102ddc6de13b07c7f8b59 (diff)
downloadfosdem-2018-presentation-ffd8ccbffabdeb359ef2e32b5b1e792adfb257d4.tar
fosdem-2018-presentation-ffd8ccbffabdeb359ef2e32b5b1e792adfb257d4.tar.gz
Issue #698: Non-async script callbacks are now also called before starting Reveal
Diffstat (limited to 'js')
-rw-r--r--js/reveal.js113
1 files changed, 61 insertions, 52 deletions
diff --git a/js/reveal.js b/js/reveal.js
index 410b390..e87a9cf 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -242,58 +242,67 @@ var Reveal = (function(){
}
- /**
- * Loads the dependencies of reveal.js. Dependencies are
- * defined via the configuration option 'dependencies'
- * and will be loaded prior to starting/binding reveal.js.
- * Some dependencies may have an 'async' flag, if so they
- * will load after reveal.js has been started up.
- */
- function load() {
-
- var scripts = [],
- scriptsAsync = [];
-
- for( var i = 0, len = config.dependencies.length; i < len; i++ ) {
- var s = config.dependencies[i];
-
- // Load if there's no condition or the condition is truthy
- if( !s.condition || s.condition() ) {
- if( s.async ) {
- scriptsAsync.push( s.src );
- }
- else {
- scripts.push( s.src );
- }
-
- // Extension may contain callback functions
- if( typeof s.callback === 'function' ) {
- head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback );
- }
- }
- }
-
- // Called once synchronous scripts finish loading
- function proceed() {
- if( scriptsAsync.length ) {
- // Load asynchronous scripts
- head.js.apply( null, scriptsAsync );
- }
-
- start();
- }
-
- if( scripts.length ) {
- scripts.push(proceed);
-
- // Load synchronous scripts
- head.js.apply( null, scripts );
- }
- else {
- proceed();
- }
-
- }
+ /**
+ * Loads the dependencies of reveal.js. Dependencies are
+ * defined via the configuration option 'dependencies'
+ * and will be loaded prior to starting/binding reveal.js.
+ * Some dependencies may have an 'async' flag, if so they
+ * will load after reveal.js has been started up.
+ */
+ function load() {
+ var scripts = [],
+ scriptsAsync = [],
+ scriptsToApply = 0;
+
+ // Called once synchronous scripts finish loading
+ function proceed() {
+ if( scriptsAsync.length ) {
+ // Load asynchronous scripts
+ head.js.apply( null, scriptsAsync );
+ }
+
+ start();
+ }
+
+ for( var i = 0, len = config.dependencies.length; i < len; i++ ) {
+ var s = config.dependencies[i];
+
+ // Load if there's no condition or the condition is truthy
+ if( !s.condition || s.condition() ) {
+ if( s.async ) {
+ scriptsAsync.push( s.src );
+ }
+ else {
+ scripts.push( s.src );
+ }
+
+ // Extension may contain callback functions
+ (function(s) {
+ head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], function() {
+ if( typeof s.callback === 'function' ) {
+ s.callback.apply(this);
+ }
+
+ scriptsToApply--;
+ if (scriptsToApply === 0) {
+ proceed();
+ }
+ });
+ })(s);
+ }
+ }
+
+ if( scripts.length ) {
+ scriptsToApply = scripts.length;
+
+ // Load synchronous scripts
+ head.js.apply( null, scripts );
+ }
+ else {
+ proceed();
+ }
+
+ }
/**
* Starts up reveal.js by binding input events and navigating