Skip to content

Commit 4f19d9f

Browse files
committed
Try the lozad lazy loader
1 parent 16ca116 commit 4f19d9f

File tree

7 files changed

+41
-21
lines changed

7 files changed

+41
-21
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module.exports = {
2424

2525
// errors
2626
'no-cond-assign': [2, 'always'],
27-
'no-console': 2,
27+
'no-console': 0,
2828
'no-constant-condition': 2,
2929
'no-control-regex': 2,
3030
'no-debugger': 2,

dev/Common/Consts.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@ export const RAINLOOP_TRIAL_KEY = 'RAINLOOP-TRIAL-KEY';
4141
export const DATA_IMAGE_USER_DOT_PIC = 'data:image/png;base64,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';
4242

4343
export const DATA_IMAGE_TRANSP_PIC = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
44+
45+
export const DATA_IMAGE_LAZY_PLACEHOLDER_PIC = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC';

dev/Model/Message.js

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import $ from '$';
44
import ko from 'ko';
55
import moment from 'moment';
66
import classnames from 'classnames';
7+
import lozad from 'lozad';
78

89
import {MessagePriority, SignedVerifyStatus} from 'Common/Enums';
910
import {i18n} from 'Common/Translator';
11+
import {DATA_IMAGE_LAZY_PLACEHOLDER_PIC} from 'Common/Consts';
1012

1113
import {
1214
pInt, inArray, isArray, isUnd, trim,
@@ -743,11 +745,28 @@ class MessageModel extends AbstractModel
743745
if (this.body)
744746
{
745747
$('.lazy.lazy-inited[data-original]', this.body).each(function() {
746-
$(this).attr('src', $(this).attr('data-original')).removeAttr('data-original'); // eslint-disable-line no-invalid-this
748+
$(this).attr('src', $(this).attr('data-original')) // eslint-disable-line no-invalid-this
749+
.removeAttr('data-original').removeAttr('data-loaded');
747750
});
748751
}
749752
}
750753

754+
lozad() {
755+
lozad('img.lazy:not(.lazy-inited)', {
756+
threshold: 0.4,
757+
load: (element) => {
758+
// console.log('lazy', element.dataset.original);
759+
element.src = DATA_IMAGE_LAZY_PLACEHOLDER_PIC;
760+
$(element)
761+
.addClass('lazy-inited')
762+
.attr('src', element.dataset.original)
763+
.removeAttr('data-loaded')
764+
.css({opacity: 0.3})
765+
.animate({opacity: 1}, 500);
766+
}
767+
}).observe();
768+
}
769+
751770
showExternalImages(lazy = false) {
752771
if (this.body && this.body.data('rl-has-images'))
753772
{
@@ -762,11 +781,13 @@ class MessageModel extends AbstractModel
762781
$this
763782
.addClass('lazy')
764783
.attr('data-original', $this.attr(attr))
784+
.removeAttr('data-loaded')
765785
.removeAttr(attr);
766786
}
767787
else
768788
{
769-
$this.attr('src', $this.attr(attr)).removeAttr(attr);
789+
$this.attr('src', $this.attr(attr))
790+
.removeAttr('data-loaded').removeAttr(attr);
770791
}
771792
});
772793

@@ -780,13 +801,7 @@ class MessageModel extends AbstractModel
780801

781802
if (lazy)
782803
{
783-
$('img.lazy', this.body).addClass('lazy-inited').lazyload({
784-
'threshold': 400,
785-
'effect': 'fadeIn',
786-
'skip_invisible': false,
787-
'container': $('.RL-MailMessageView .messageView .messageItem .content')[0]
788-
});
789-
804+
this.lozad();
790805
$win.resize();
791806
}
792807

@@ -867,16 +882,8 @@ class MessageModel extends AbstractModel
867882

868883
if (lazy)
869884
{
870-
(function($oImg, oContainer) {
871-
_.delay(() => {
872-
$oImg.addClass('lazy-inited').lazyload({
873-
'threshold': 400,
874-
'effect': 'fadeIn',
875-
'skip_invisible': false,
876-
'container': oContainer
877-
});
878-
}, 300);
879-
}($('img.lazy', self.body), $('.RL-MailMessageView .messageView .messageItem .content')[0]));
885+
// $('.RL-MailMessageView .messageView .messageItem .content')[0]
886+
_.delay(() => this.lozad(), 300);
880887
}
881888

882889
windowResize(500);

dev/boot.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ window.progressJs.onbeforeend(() => {
2222
});
2323

2424
require('json3');
25+
require('intersection-observer');
2526
require('../vendors/modernizr/modernizr-custom.js');
2627
require('Common/Booter');
2728

gulpfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ cfg.paths.js = {
194194
'node_modules/jquery/dist/jquery.min.js',
195195
'node_modules/jquery-mousewheel/jquery.mousewheel.js',
196196
'node_modules/jquery-scrollstop/jquery.scrollstop.js',
197-
'node_modules/jquery-lazyload/jquery.lazyload.js ',
197+
// 'node_modules/jquery-lazyload/jquery.lazyload.js',
198198
'node_modules/jquery-backstretch/jquery.backstretch.min.js',
199199
'vendors/jquery-ui/js/jquery-ui-1.10.3.custom.min.js', // custom
200200
'vendors/jquery-nanoscroller/jquery.nanoscroller.js', // custom (modified)

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
"gulp-util": "3.0.8",
9494
"gulp-zip": "4.0.0",
9595
"ifvisible.js": "1.0.6",
96+
"intersection-observer": "^0.4.2",
9697
"jquery": "2.2.4",
9798
"jquery-backstretch": "2.1.16",
9899
"jquery-lazyload": "1.9.7",
@@ -105,6 +106,7 @@
105106
"knockout-projections": "github:stevesanderson/knockout-projections#v1.1.0",
106107
"knockout-sortable": "0.14.1",
107108
"lightgallery": "1.2.21",
109+
"lozad": "1.0.2",
108110
"matchmedia-polyfill": "0.3.0",
109111
"moment": "2.18.1",
110112
"node-fs": "0.1.7",

yarn.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2876,6 +2876,10 @@ interpret@^1.0.0:
28762876
version "1.0.4"
28772877
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0"
28782878

2879+
intersection-observer@^0.4.2:
2880+
version "0.4.2"
2881+
resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.4.2.tgz#24100ed620baf6a427072996d4d73366e9ec93ef"
2882+
28792883
invariant@^2.2.0, invariant@^2.2.2:
28802884
version "2.2.2"
28812885
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
@@ -3681,6 +3685,10 @@ loud-rejection@^1.0.0:
36813685
currently-unhandled "^0.4.1"
36823686
signal-exit "^3.0.0"
36833687

3688+
3689+
version "1.0.2"
3690+
resolved "https://registry.yarnpkg.com/lozad/-/lozad-1.0.2.tgz#9936b781f81592e2c8309e14e9556ad9bebb403d"
3691+
36843692
lru-cache@2:
36853693
version "2.7.3"
36863694
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"

0 commit comments

Comments
 (0)