From e05768574fc9ae96a1838eccd314715baf6f23a6 Mon Sep 17 00:00:00 2001 From: "mai.tan" Date: Mon, 18 Feb 2019 10:38:23 +0900 Subject: [PATCH 1/2] Fix doc.readyState --- .src/defer.js | 2 +- .src/demo.html | 2 +- defer.min.js | 2 +- defer_plus.min.js | 2 +- demo.html | 2 +- package.json | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.src/defer.js b/.src/defer.js index 418f885..ce0c230 100644 --- a/.src/defer.js +++ b/.src/defer.js @@ -41,7 +41,7 @@ var fn_queue = []; var time_queue = []; - var DOM_ready = doc.readyState; + var DOM_ready = (doc.readyState == 'complete'); function onload () { DOM_ready = true; diff --git a/.src/demo.html b/.src/demo.html index 2d65d50..ff032af 100644 --- a/.src/demo.html +++ b/.src/demo.html @@ -4,7 +4,7 @@ Easily lazy-load JS, CSS, images, iframes - @shinsenter / defer.js - + diff --git a/defer.min.js b/defer.min.js index 43fb2ad..c13f0f8 100644 --- a/defer.min.js +++ b/defer.min.js @@ -1,2 +1,2 @@ /*! @shinsenter/defer.js */ -!function(d,a,i,e,n){var o="onload",c=[],r=[],f=a.readyState;function u(e,n,t){e=e.bind(t||d),n=n||0,f?i(e,n):(c.push(e),r.push(n))}d[e]=d[e]||u,d[n]=d[n]||function(n,t,e,d){u(function(){var e;a.getElementById(t)||((e=a.createElement("SCRIPT")).id=t,e.async=e.defer=!0,e[o]=d||e[o],e.src=n,a.getElementsByTagName("HEAD")[0].appendChild(e))},e)},d.addEventListener("load",function(){f=!0,c.forEach(function(e,n){i(e,r[n])}),c=[],r=[]})}(window,document,setTimeout,"defer","deferscript"); \ No newline at end of file +!function(d,o,a,e,n){var c="onload",i=[],r=[],f="complete"==o.readyState;function u(e,n,t){e=e.bind(t||d),n=n||0,f?a(e,n):(i.push(e),r.push(n))}d[e]=d[e]||u,d[n]=d[n]||function(n,t,e,d){u(function(){var e;o.getElementById(t)||((e=o.createElement("SCRIPT")).id=t,e.async=e.defer=!0,e[c]=d||e[c],e.src=n,o.getElementsByTagName("HEAD")[0].appendChild(e))},e)},d.addEventListener("load",function(){f=!0,i.forEach(function(e,n){a(e,r[n])}),i=[],r=[]})}(window,document,setTimeout,"defer","deferscript"); \ No newline at end of file diff --git a/defer_plus.min.js b/defer_plus.min.js index 8f4f52d..6b3fa28 100644 --- a/defer_plus.min.js +++ b/defer_plus.min.js @@ -1,2 +1,2 @@ /*! @shinsenter/defer.js */ -!function(r,c,i,e,n){var a="onload",o=[],d=[],f=c.readyState;function s(e,n,t){e=e.bind(t||r),n=n||0,f?i(e,n):(o.push(e),d.push(n))}r[e]=r[e]||s,r[n]=r[n]||function(n,t,e,r){s(function(){var e;c.getElementById(t)||((e=c.createElement("SCRIPT")).id=t,e.async=e.defer=!0,e[a]=r||e[a],e.src=n,c.getElementsByTagName("HEAD")[0].appendChild(e))},e)},r.addEventListener("load",function(){f=!0,o.forEach(function(e,n){i(e,d[n])}),o=[],d=[]})}(window,document,setTimeout,"defer","deferscript"),function(s,u,e,n,t){var l,m="IntersectionObserver",r="jQuery",c="LINK",E="src",y="srcset",g="dataset",h="classList",p=/^\.+/,v="replace";function I(){}function i(f){return function(e,n,t,r){var c,i,a,o,d=function(e){!1!==r.call(e,e)&&(e[E]=e[g][E]||e[E],e[y]=e[g][y]||e[y])};e=(e||"lazy")[v](p,""),t=(t||"deferred")[v](p,""),r=r||I,c=f+"."+e+":not(."+t+")",m in s&&(o=d,a=new s[m](function(e,n){e.forEach(function(e){e.isIntersecting&&(a.unobserve(i=e.target),h in i&&i[h].add(t),o(i))})}),d=a.observe.bind(a)),l(function(){u.querySelectorAll(c).forEach(d)},n)}}(l=s.defer)&&(s.$=function(e,n){l(function(){s[r]&&s[r].call(s,e)},n)},s[e]=s[e]||function(n,t,e){l(function(){var e=u.getElementById(t);e&&e.tagName!==c||(e||((e=u.createElement(c)).id=t,u.getElementsByTagName("HEAD")[0].appendChild(e)),e.rel="stylesheet",e.type="text/css",e.href=n)},e)},s[n]=s[n]||i("IMG"),s[t]=s[t]||i("IFRAME"))}(window,document,"deferstyle","deferimg","deferiframe"); \ No newline at end of file +!function(r,c,i,e,n){var o="onload",a=[],d=[],f="complete"==c.readyState;function s(e,n,t){e=e.bind(t||r),n=n||0,f?i(e,n):(a.push(e),d.push(n))}r[e]=r[e]||s,r[n]=r[n]||function(n,t,e,r){s(function(){var e;c.getElementById(t)||((e=c.createElement("SCRIPT")).id=t,e.async=e.defer=!0,e[o]=r||e[o],e.src=n,c.getElementsByTagName("HEAD")[0].appendChild(e))},e)},r.addEventListener("load",function(){f=!0,a.forEach(function(e,n){i(e,d[n])}),a=[],d=[]})}(window,document,setTimeout,"defer","deferscript"),function(s,u,e,n,t){var l,m="IntersectionObserver",r="jQuery",c="LINK",E="src",y="srcset",g="dataset",p="classList",h=/^\.+/,v="replace";function I(){}function i(f){return function(e,n,t,r){var c,i,o,a,d=function(e){!1!==r.call(e,e)&&(e[E]=e[g][E]||e[E],e[y]=e[g][y]||e[y])};e=(e||"lazy")[v](h,""),t=(t||"deferred")[v](h,""),r=r||I,c=f+"."+e+":not(."+t+")",m in s&&(a=d,o=new s[m](function(e,n){e.forEach(function(e){e.isIntersecting&&(o.unobserve(i=e.target),p in i&&i[p].add(t),a(i))})}),d=o.observe.bind(o)),l(function(){u.querySelectorAll(c).forEach(d)},n)}}(l=s.defer)&&(s.$=function(e,n){l(function(){s[r]&&s[r].call(s,e)},n)},s[e]=s[e]||function(n,t,e){l(function(){var e=u.getElementById(t);e&&e.tagName!==c||(e||((e=u.createElement(c)).id=t,u.getElementsByTagName("HEAD")[0].appendChild(e)),e.rel="stylesheet",e.type="text/css",e.href=n)},e)},s[n]=s[n]||i("IMG"),s[t]=s[t]||i("IFRAME"))}(window,document,"deferstyle","deferimg","deferiframe"); \ No newline at end of file diff --git a/demo.html b/demo.html index 80efe32..16fb677 100644 --- a/demo.html +++ b/demo.html @@ -1,4 +1,4 @@ -Easily lazy-load JS, CSS, images, iframes - @shinsenter / defer.js

Easily lazy-load JS, CSS, images, iframes A demo using @shinsenter / defer.js

Getting started

You only need to load this library (*) once on a page, ideally right after the opening <head> tag:


Code:<head>
+Easily lazy-load JS, CSS, images, iframes - @shinsenter / defer.js

Easily lazy-load JS, CSS, images, iframes A demo using @shinsenter / defer.js

Getting started

You only need to load this library (*) once on a page, ideally right after the opening <head> tag:


Code:<head>
     <title>My awesome page</title>
     <script src="//raw.githubusercontent.com/shinsenter/defer.js/master/defer_plus.min.js"></script>
 </head>

Because the minified version of defer.js is super tiny, you can inline its content directly into the HTML document and avoid the network request.

(*) Examples on this page are using extended version of defer.js.

You can use browser's Developer Tool (press F12) to watch how requests are sent.

I added some spaces with gray background to demo lazy-load. Please scroll down.

But wait. Do you notice that there is a share buttons block on the top?

Your browser loaded it after 3 seconds since your page fired the 'load' event.


Code:<script type="text/javascript">
diff --git a/package.json b/package.json
index cfb4a6f..e71a24e 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,11 @@
 {
   "name": "@shinsenter/defer.js",
   "version": "1.0.5",
-  "description": "Super tiny script to efficiently load javascript (and more).",
+  "description": "defer.js by shinsenter is a super tiny script to efficiently load JavaScript. Extended version supports CSS files, images and iframes. They are all easy to use.",
   "main": "defer_plus.min.js",
   "scripts": {
-    "dist": "uglifyjs ./.src/defer.js -c -m --comments '/^!/' --verbose -o defer.min.js",
-    "plus": "uglifyjs ./.src/defer.js ./.src/extensions.js -c -m --comments '/^!/' --verbose -o defer_plus.min.js",
+    "dist": "uglifyjs ./.src/defer.js -c -m --comments /^!/ --verbose -o defer.min.js",
+    "plus": "uglifyjs ./.src/defer.js ./.src/extensions.js -c -m --comments /^!/ --verbose -o defer_plus.min.js",
     "demo": "html-minifier ./.src/demo.html -o demo.html --collapse-whitespace --remove-comments --remove-optional-tags --remove-redundant-attributes --remove-script-type-attributes --remove-tag-whitespace --use-short-doctype --minify-css true --minify-js true",
     "deploy": "npm publish --access=public",
     "test": "echo \"Error: no test specified\" && exit 1"

From a2075df66413a5fd8a25c5cc03b7471682326c48 Mon Sep 17 00:00:00 2001
From: "mai.tan" 
Date: Mon, 18 Feb 2019 10:43:00 +0900
Subject: [PATCH 2/2] Ready for release

---
 package-lock.json | 2 +-
 package.json      | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index c599631..00472a1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
 {
   "name": "@shinsenter/defer.js",
-  "version": "1.0.5",
+  "version": "1.0.6",
   "lockfileVersion": 1
 }
diff --git a/package.json b/package.json
index e71a24e..4183b62 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,13 @@
 {
   "name": "@shinsenter/defer.js",
-  "version": "1.0.5",
+  "version": "1.0.6",
   "description": "defer.js by shinsenter is a super tiny script to efficiently load JavaScript. Extended version supports CSS files, images and iframes. They are all easy to use.",
   "main": "defer_plus.min.js",
   "scripts": {
     "dist": "uglifyjs ./.src/defer.js -c -m --comments /^!/ --verbose -o defer.min.js",
     "plus": "uglifyjs ./.src/defer.js ./.src/extensions.js -c -m --comments /^!/ --verbose -o defer_plus.min.js",
     "demo": "html-minifier ./.src/demo.html -o demo.html --collapse-whitespace --remove-comments --remove-optional-tags --remove-redundant-attributes --remove-script-type-attributes --remove-tag-whitespace --use-short-doctype --minify-css true --minify-js true",
+    "all": "npm run dist && npm run plus && npm run demo",
     "deploy": "npm publish --access=public",
     "test": "echo \"Error: no test specified\" && exit 1"
   },