]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
do less calculations to improve the performance
authorDaniel Ruf <daniel@daniel-ruf.de>
Wed, 28 Feb 2018 22:13:50 +0000 (23:13 +0100)
committerDaniel Ruf <daniel.ruf@ueberbit.de>
Thu, 15 Mar 2018 10:03:09 +0000 (11:03 +0100)
js/foundation.magellan.js
test/javascript/components/magellan.js

index db72c4b1053d02bd0c838886651b0f0bfb620456..3732e9967dc5fa69aa036854cb920c99aa163afc 100644 (file)
@@ -93,22 +93,31 @@ class Magellan extends Plugin {
       _this._updateActive();
     });
 
-    this.$element.on({
-      'resizeme.zf.trigger': this.reflow.bind(this),
-      'scrollme.zf.trigger': this._updateActive.bind(this)
-    }).on('click.zf.magellan', 'a[href^="#"]', function(e) {
+    if (document.readyState === "complete") {
+      _this.$element.on({
+        'resizeme.zf.trigger': _this.reflow.bind(_this),
+        'scrollme.zf.trigger': _this._updateActive.bind(_this)
+      }).on('click.zf.magellan', 'a[href^="#"]', function(e) {
         e.preventDefault();
-        var arrival   = this.getAttribute('href');
+        var arrival   = _this.getAttribute('href');
         _this.scrollToLoc(arrival);
-        _this.calcPoints();
-        _this._updateActive();
       });
-
+    } else {
+      $(window).one('load', function(){
+        _this.$element.on({
+          'resizeme.zf.trigger': _this.reflow.bind(_this),
+          'scrollme.zf.trigger': _this._updateActive.bind(_this)
+        }).on('click.zf.magellan', 'a[href^="#"]', function(e) {
+          e.preventDefault();
+          var arrival   = _this.getAttribute('href');
+          _this.scrollToLoc(arrival);
+        });
+      });
+    }
+    
     this._deepLinkScroll = function(e) {
       if(_this.options.deepLinking) {
         _this.scrollToLoc(window.location.hash);
-        _this.calcPoints();
-        _this._updateActive();
       }
     };
 
index 23e6d4f5edffc25a70651046bfdea5ac5bea4017..42fc3ee0df7529cbcd8e1a0e9e05f01e8a0912fe 100644 (file)
@@ -56,7 +56,9 @@ describe('Magellan', function() {
 
       // Jump to last section
       var target = $html.find('a').eq(-1).attr('href');
-      plugin.scrollToLoc(target);      
+      $html.one('load', function(){
+        plugin.scrollToLoc(target);
+                       });
 
       // The `update` event doesn't work properly because it fires too often
       setTimeout(function() {
@@ -82,7 +84,9 @@ describe('Magellan', function() {
       var hasError = false;
       try {
                                var target = $html.find('a').eq(-1).attr('href');
-             plugin.scrollToLoc(target); 
+        $html.one('load', function(){
+          plugin.scrollToLoc(target);
+        });
       } catch (err) {
        hasError = true;
       }