From 46694a138bb0f64e2686f1ec0845ac6e3c806015 Mon Sep 17 00:00:00 2001 From: dsk7 Date: Wed, 7 Jan 2015 00:15:51 +0100 Subject: [PATCH 1/6] allow rendering to continue even if a linked item in head is missing --- src/replace.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/replace.js b/src/replace.js index 20f0b9d..5e8826b 100644 --- a/src/replace.js +++ b/src/replace.js @@ -77,9 +77,12 @@ EPUBJS.replace.links = function(_store, full, done, link){ }, 5); //-- Allow for css to apply before displaying chapter }); }else{ - _store.getUrl(full).then(done); - } -}; + _store.getUrl(full).then(done, function(reason) { + // we were unable to get the url, signal to upper layer + done(null); + }); + } + }; EPUBJS.replace.stylesheets = function(_store, full) { var deferred = new RSVP.defer(); From 9255dca7b5b465f57d0728524b377dfc4b5ac949 Mon Sep 17 00:00:00 2001 From: dsk7 Date: Wed, 7 Jan 2015 00:20:59 +0100 Subject: [PATCH 2/6] fixed whitespaces --- src/replace.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/replace.js b/src/replace.js index 5e8826b..7286fd6 100644 --- a/src/replace.js +++ b/src/replace.js @@ -77,12 +77,12 @@ EPUBJS.replace.links = function(_store, full, done, link){ }, 5); //-- Allow for css to apply before displaying chapter }); }else{ - _store.getUrl(full).then(done, function(reason) { - // we were unable to get the url, signal to upper layer - done(null); - }); - } - }; + _store.getUrl(full).then(done, function(reason) { + // we were unable to get the url, signal to upper layer + done(null); + }); + } +}; EPUBJS.replace.stylesheets = function(_store, full) { var deferred = new RSVP.defer(); From 485c2541f360a1ddcabd76537d93d12f0883123c Mon Sep 17 00:00:00 2001 From: Ben De Meester Date: Wed, 7 Jan 2015 11:01:27 +0100 Subject: [PATCH 3/6] BUGFIX check for parsing errors when localStorage settings are read --- reader_src/reader.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reader_src/reader.js b/reader_src/reader.js index 3ec82e5..10173b0 100644 --- a/reader_src/reader.js +++ b/reader_src/reader.js @@ -269,8 +269,12 @@ EPUBJS.Reader.prototype.applySavedSettings = function() { if(!localStorage) { return false; } - + + try { stored = JSON.parse(localStorage.getItem(this.settings.bookKey)); + } catch (e) { // parsing error of localStorage + return false; + } if(stored) { this.settings = _.defaults(this.settings, stored); From 6555a61bffd287f9d99941b451f0d04c69a79e8c Mon Sep 17 00:00:00 2001 From: Ben De Meester Date: Wed, 7 Jan 2015 11:14:31 +0100 Subject: [PATCH 4/6] BUGFIX getFirstVisible did take embedded elements into account --- src/renderer.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/renderer.js b/src/renderer.js index 04f2e26..2fdf53d 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -484,6 +484,16 @@ EPUBJS.Renderer.prototype.firstElementisTextNode = function(node) { return false; }; +EPUBJS.Renderer.prototype.isGoodNode = function(node) { + "use strict"; + var embeddedElements = ["audio", "canvas", "embed", "iframe", "img", "math", "object", "svg", "video"]; + if (embeddedElements.indexOf(node.tagName.toLowerCase()) !== -1) { + // Embedded elements usually do not have a text node as first element, but are also good nodes + return true; + } + return this.firstElementisTextNode(node); +}; + // Walk the node tree from a start element to next visible element EPUBJS.Renderer.prototype.walk = function(node, x, y) { var r, children, leng, @@ -495,7 +505,7 @@ EPUBJS.Renderer.prototype.walk = function(node, x, y) { while(!r && stack.length) { node = stack.shift(); - if( this.containsPoint(node, x, y) && this.firstElementisTextNode(node)) { + if( this.containsPoint(node, x, y) && this.isGoodNode(node)) { r = node; } From f5344f5fba999ad614143331875545ffd9505327 Mon Sep 17 00:00:00 2001 From: Ben De Meester Date: Wed, 7 Jan 2015 16:39:33 +0100 Subject: [PATCH 5/6] BUGFIX generateCfiFromElement didn't work for embedded elements --- src/epubcfi.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/epubcfi.js b/src/epubcfi.js index 6ab147f..359f96d 100644 --- a/src/epubcfi.js +++ b/src/epubcfi.js @@ -40,8 +40,14 @@ EPUBJS.EpubCFI.prototype.generateCfiFromElement = function(element, chapter) { // Start of Chapter return "epubcfi(" + chapter + "!/4/)"; } else { + var offset = ""; + var embeddedElements = ["audio", "canvas", "embed", "iframe", "img", "math", "object", "svg", "video"]; + if (embeddedElements.indexOf(element.tagName.toLowerCase()) === -1) { + // if the element could contain text, set the character offset; + offset += "/1:0"; + } // First Text Node - return "epubcfi(" + chapter + "!" + path + "/1:0)"; + return "epubcfi(" + chapter + "!" + path + offset + ")"; } }; From c0ce4cce9e18ce897ccc1c42f52f70b9b6da9215 Mon Sep 17 00:00:00 2001 From: Ben De Meester Date: Fri, 9 Jan 2015 08:57:40 +0100 Subject: [PATCH 6/6] removed "use strict" in function --- src/renderer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/renderer.js b/src/renderer.js index 2fdf53d..5f99738 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -485,7 +485,6 @@ EPUBJS.Renderer.prototype.firstElementisTextNode = function(node) { }; EPUBJS.Renderer.prototype.isGoodNode = function(node) { - "use strict"; var embeddedElements = ["audio", "canvas", "embed", "iframe", "img", "math", "object", "svg", "video"]; if (embeddedElements.indexOf(node.tagName.toLowerCase()) !== -1) { // Embedded elements usually do not have a text node as first element, but are also good nodes