mirror of
https://github.com/alexadam/save-as-ebook.git
synced 2025-09-10 09:24:49 +00:00
misc changes; removed force()
This commit is contained in:
parent
b49b78ad88
commit
9a75e6e92a
3 changed files with 57 additions and 143 deletions
|
@ -33,20 +33,14 @@ var supportedCss = [
|
|||
'border',
|
||||
'color',
|
||||
'font',
|
||||
// 'letter-spacing',
|
||||
'line-height',
|
||||
'list-style',
|
||||
'padding',
|
||||
// 'text-decoration',
|
||||
// 'text-transform',
|
||||
'text-align',
|
||||
// 'word-spacing',
|
||||
];
|
||||
//////
|
||||
|
||||
function getImageSrc(srcTxt) {
|
||||
|
||||
|
||||
if (!srcTxt) {
|
||||
return '';
|
||||
}
|
||||
|
@ -73,8 +67,6 @@ function getImageSrc(srcTxt) {
|
|||
data: getBase64ImgData(srcTxt)
|
||||
});
|
||||
} else {
|
||||
console.log("img url", fileExtension, getImgDownloadUrl(srcTxt));
|
||||
|
||||
allImages.push({
|
||||
originalUrl: getImgDownloadUrl(srcTxt),
|
||||
filename: newImgFileName, // TODO name
|
||||
|
@ -131,84 +123,6 @@ function preProcess($htmlObject) {
|
|||
extractSvgToImg($htmlObject);
|
||||
}
|
||||
|
||||
|
||||
// TODO remove / change
|
||||
// function force($content, withError) {
|
||||
// try {
|
||||
// var tagOpen = '@@@' + generateRandomTag();
|
||||
// var tagClose = '###' + generateRandomTag();
|
||||
// // var tagOpen = '<';
|
||||
// // var tagClose = '>';
|
||||
// var startEl = '<object>';
|
||||
// var endEl = '</object>';
|
||||
|
||||
// // if (withError) {
|
||||
// // $content = $($content);
|
||||
// // preProcess($content);
|
||||
// // }
|
||||
|
||||
// $content.find('img').each(function (index, elem) {
|
||||
// var $elem = $(elem);
|
||||
// var imgSrc = getImageSrc($elem.attr('src'));
|
||||
// if (imgSrc === '') {
|
||||
// $elem.replaceWith('');
|
||||
// } else {
|
||||
// var className = $elem.attr('data-class');
|
||||
// $elem.replaceWith(startEl + tagOpen + 'img src="' + imgSrc + '" class="' + className + '"' + tagClose + tagOpen + '/img' + tagClose + endEl);
|
||||
// }
|
||||
// });
|
||||
|
||||
// $content.find('a').each(function (index, elem) {
|
||||
// var $elem = $(elem);
|
||||
// var aHref = getHref($elem.attr('href'));
|
||||
// if (aHref === '') {
|
||||
// $elem.replaceWith('');
|
||||
// } else {
|
||||
// var className = $elem.attr('data-class');
|
||||
// $elem.replaceWith(startEl + tagOpen + 'a href="' + aHref + '" class="' + className + '"' + tagClose + $(elem).html() + tagOpen + '/a' + tagClose + endEl);
|
||||
// }
|
||||
// });
|
||||
|
||||
// // var regex = /(<([^>]+)>)/ig
|
||||
// // var contentString = $content.html().replace(regex, '')
|
||||
|
||||
// function all($startElement) {
|
||||
// var tagName = $startElement.get(0).tagName.toLowerCase();
|
||||
// if (allowedTags.indexOf(tagName) >= 0) {
|
||||
// var children = $startElement.children();
|
||||
// var childrenLen = children.length;
|
||||
// while (childrenLen--) {
|
||||
// all($(children[childrenLen]));
|
||||
// }
|
||||
// var className = $startElement.attr('data-class');
|
||||
// // $startElement.replaceWith(startEl + tagOpen + tagName + ' class="' + className + '"' + tagClose + $startElement.html() + tagOpen + '/' + tagName + tagClose + endEl);
|
||||
|
||||
// $startElement.replaceWith(tagOpen + tagName + ' class="' + className + '"' + tagClose +
|
||||
// $startElement.html() + tagOpen + '/' + tagName + tagClose);
|
||||
// }
|
||||
// }
|
||||
|
||||
// all($content);
|
||||
|
||||
// var contentString = $content.text();
|
||||
|
||||
// var tagOpenRegex = new RegExp(tagOpen, 'gi');
|
||||
// var tagCloseRegex = new RegExp(tagClose, 'gi');
|
||||
// contentString = contentString.replace(tagOpenRegex, '<');
|
||||
// contentString = contentString.replace(tagCloseRegex, '>');
|
||||
// contentString = contentString.replace(/&/gi, '&');
|
||||
// contentString = contentString.replace(/&nbsp;/gi, ' ');
|
||||
|
||||
// // getHref() replace does not work (& is overwritten)
|
||||
// // contentString = escapeXMLChars(contentString);
|
||||
|
||||
// return contentString;
|
||||
// } catch (e) {
|
||||
// console.log('Error:', e);
|
||||
// return e;
|
||||
// }
|
||||
// }
|
||||
|
||||
function parseHTML(rawContentString) {
|
||||
allImages = [];
|
||||
extractedImages = [];
|
||||
|
@ -225,9 +139,9 @@ function parseHTML(rawContentString) {
|
|||
}
|
||||
|
||||
if (tag === 'img') {
|
||||
var tmpAttrsTxt = '';
|
||||
let tmpAttrsTxt = '';
|
||||
let tmpSrc = ''
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
for (let i = 0; i < attrs.length; i++) {
|
||||
if (attrs[i].name === 'src') {
|
||||
tmpSrc = getImageSrc(attrs[i].value)
|
||||
tmpAttrsTxt += ' src="' + tmpSrc + '"';
|
||||
|
@ -248,8 +162,8 @@ function parseHTML(rawContentString) {
|
|||
lastFragment = tmpAttrsTxt.length === 0 ? '<img></img>' : '<img' + tmpAttrsTxt + ' alt=""></img>';
|
||||
}
|
||||
} else if (tag === 'a') {
|
||||
var tmpAttrsTxt = '';
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
let tmpAttrsTxt = '';
|
||||
for (let i = 0; i < attrs.length; i++) {
|
||||
if (attrs[i].name === 'href') {
|
||||
tmpAttrsTxt += ' href="' + getHref(attrs[i].value) + '"';
|
||||
} else if (attrs[i].name === 'data-class') {
|
||||
|
@ -258,25 +172,25 @@ function parseHTML(rawContentString) {
|
|||
}
|
||||
lastFragment = tmpAttrsTxt.length === 0 ? '<a>' : '<a' + tmpAttrsTxt + '>';
|
||||
} else if (tag === 'br' || tag === 'hr') {
|
||||
var tmpAttrsTxt = '';
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
let tmpAttrsTxt = '';
|
||||
for (let i = 0; i < attrs.length; i++) {
|
||||
if (attrs[i].name === 'data-class') {
|
||||
tmpAttrsTxt += ' class="' + attrs[i].value + '"';
|
||||
}
|
||||
}
|
||||
lastFragment = '<' + tag + tmpAttrsTxt + '></' + tag + '>';
|
||||
} else if (tag === 'math') {
|
||||
var tmpAttrsTxt = '';
|
||||
let tmpAttrsTxt = '';
|
||||
tmpAttrsTxt += ' xmlns="http://www.w3.org/1998/Math/MathML"';
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
for (let i = 0; i < attrs.length; i++) {
|
||||
if (attrs[i].name === 'alttext') {
|
||||
tmpAttrsTxt += ' alttext="' + attrs[i].value + '"';
|
||||
}
|
||||
}
|
||||
lastFragment = '<' + tag + tmpAttrsTxt + '>';
|
||||
} else {
|
||||
var tmpAttrsTxt = '';
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
let tmpAttrsTxt = '';
|
||||
for (let i = 0; i < attrs.length; i++) {
|
||||
if (attrs[i].name === 'data-class') {
|
||||
tmpAttrsTxt += ' class="' + attrs[i].value + '"';
|
||||
}
|
||||
|
@ -321,9 +235,9 @@ function getContent(htmlContent) {
|
|||
try {
|
||||
// TODO - move; called multiple times on selection
|
||||
preProcess($('body'))
|
||||
var tmp = document.createElement('div');
|
||||
let tmp = document.createElement('div');
|
||||
tmp.appendChild(htmlContent.cloneNode(true));
|
||||
var tmpHtml = '<div>' + tmp.innerHTML + '</div>';
|
||||
let tmpHtml = '<div>' + tmp.innerHTML + '</div>';
|
||||
return parseHTML(tmpHtml);
|
||||
} catch (e) {
|
||||
console.log('Error:', e);
|
||||
|
@ -338,9 +252,9 @@ function getSelectedNodes() {
|
|||
// return document.selection.createRange().parentElement();
|
||||
// return document.selection.createRange();
|
||||
// }
|
||||
var selection = window.getSelection();
|
||||
var docfrag = [];
|
||||
for (var i = 0; i < selection.rangeCount; i++) {
|
||||
let selection = window.getSelection();
|
||||
let docfrag = [];
|
||||
for (let i = 0; i < selection.rangeCount; i++) {
|
||||
docfrag.push(selection.getRangeAt(i).cloneContents());
|
||||
}
|
||||
return docfrag;
|
||||
|
@ -387,8 +301,8 @@ function extractCss(includeStyle, appliedStyles) {
|
|||
|
||||
// Reuse CSS - if the same css code was generated for another element, reuse it's class name
|
||||
|
||||
var tcss = JSON.stringify(tmpNewCss)
|
||||
var found = false
|
||||
let tcss = JSON.stringify(tmpNewCss)
|
||||
let found = false
|
||||
|
||||
if (Object.keys(tmpIdsToNewCssSTRING).length === 0) {
|
||||
tmpIdsToNewCssSTRING[tmpName] = tcss;
|
||||
|
@ -426,7 +340,7 @@ function extractCss(includeStyle, appliedStyles) {
|
|||
/////
|
||||
|
||||
function deferredAddZip(url, filename) {
|
||||
var deferred = $.Deferred();
|
||||
let deferred = $.Deferred();
|
||||
JSZipUtils.getBinaryContent(url, function(err, data) {
|
||||
if (err) {
|
||||
// deferred.reject(err); TODO
|
||||
|
|
|
@ -38,27 +38,27 @@ chrome.runtime.sendMessage({
|
|||
function createStyleList(styles) {
|
||||
allStyles = styles;
|
||||
chrome.tabs.query({'active': true}, function (tabs) {
|
||||
var currentUrl = tabs[0].url;
|
||||
let currentUrl = tabs[0].url;
|
||||
|
||||
if (!styles || styles.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var foundMatchingUrl = false;
|
||||
let foundMatchingUrl = false;
|
||||
|
||||
// if multiple URL regexes match, select the longest one
|
||||
var allMatchingStyles = [];
|
||||
let allMatchingStyles = [];
|
||||
|
||||
for (var i = 0; i < styles.length; i++) {
|
||||
var listItem = document.createElement('option');
|
||||
for (let i = 0; i < styles.length; i++) {
|
||||
let listItem = document.createElement('option');
|
||||
listItem.id = 'option_' + i;
|
||||
listItem.className = 'cssEditor-chapter-item';
|
||||
listItem.value = 'option_' + i;
|
||||
listItem.innerText = styles[i].title;
|
||||
|
||||
currentUrl = currentUrl.replace(/(http[s]?:\/\/|www\.)/i, '').toLowerCase();
|
||||
var styleUrl = styles[i].url;
|
||||
var styleUrlRegex = null;
|
||||
let styleUrl = styles[i].url;
|
||||
let styleUrlRegex = null;
|
||||
|
||||
try {
|
||||
styleUrlRegex = new RegExp(styleUrl, 'i');
|
||||
|
@ -77,7 +77,7 @@ function createStyleList(styles) {
|
|||
allMatchingStyles.sort(function (a, b) {
|
||||
return b.length - a.length;
|
||||
});
|
||||
var selStyle = allMatchingStyles[0];
|
||||
let selStyle = allMatchingStyles[0];
|
||||
currentStyle = styles[selStyle.index];
|
||||
|
||||
chrome.runtime.sendMessage({
|
||||
|
@ -90,7 +90,7 @@ function createStyleList(styles) {
|
|||
}
|
||||
|
||||
function createIncludeStyle(data) {
|
||||
var includeStyleCheck = document.getElementById('includeStyleCheck');
|
||||
let includeStyleCheck = document.getElementById('includeStyleCheck');
|
||||
includeStyleCheck.checked = data;
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ chrome.runtime.sendMessage({
|
|||
});
|
||||
|
||||
document.getElementById('includeStyleCheck').onclick = function () {
|
||||
var includeStyleCheck = document.getElementById('includeStyleCheck');
|
||||
let includeStyleCheck = document.getElementById('includeStyleCheck');
|
||||
chrome.runtime.sendMessage({
|
||||
type: "set include style",
|
||||
includeStyle: includeStyleCheck.checked
|
||||
|
|
|
@ -100,7 +100,7 @@ function setIsBusy(isBusy) {
|
|||
|
||||
/////
|
||||
function getCurrentUrl() {
|
||||
var url = window.location.href;
|
||||
let url = window.location.href;
|
||||
if (url.indexOf('?') > 0) {
|
||||
url = window.location.href.split('?')[0];
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ function getCurrentUrl() {
|
|||
}
|
||||
|
||||
function getOriginUrl() {
|
||||
var originUrl = window.location.origin;
|
||||
let originUrl = window.location.origin;
|
||||
if (!originUrl) {
|
||||
originUrl = window.location.protocol + "//" + window.location.host;
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ function getOriginUrl() {
|
|||
|
||||
function getFileExtension(fileName) {
|
||||
try {
|
||||
var tmpFileName = '';
|
||||
let tmpFileName = '';
|
||||
|
||||
if (isBase64Img(fileName)) {
|
||||
tmpFileName = getBase64ImgType(fileName);
|
||||
|
@ -147,7 +147,7 @@ function getFileExtension(fileName) {
|
|||
}
|
||||
|
||||
function getImageType(fileName) {
|
||||
var imageType = getFileExtension(fileName);
|
||||
let imageType = getFileExtension(fileName);
|
||||
if (imageType === 'svg') {
|
||||
imageType = 'svg+xml';
|
||||
}
|
||||
|
@ -205,18 +205,18 @@ function removeEndingSlash(inputStr) {
|
|||
|
||||
// https://gist.github.com/jonleighton/958841
|
||||
function base64ArrayBuffer(arrayBuffer) {
|
||||
var base64 = '';
|
||||
var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
let base64 = '';
|
||||
let encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
|
||||
var bytes = new Uint8Array(arrayBuffer);
|
||||
var byteLength = bytes.byteLength;
|
||||
var byteRemainder = byteLength % 3;
|
||||
var mainLength = byteLength - byteRemainder;
|
||||
let bytes = new Uint8Array(arrayBuffer);
|
||||
let byteLength = bytes.byteLength;
|
||||
let byteRemainder = byteLength % 3;
|
||||
let mainLength = byteLength - byteRemainder;
|
||||
|
||||
var a, b, c, d;
|
||||
var chunk;
|
||||
let a, b, c, d;
|
||||
let chunk;
|
||||
|
||||
for (var i = 0; i < mainLength; i = i + 3) {
|
||||
for (let i = 0; i < mainLength; i = i + 3) {
|
||||
chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
|
||||
a = (chunk & 16515072) >> 18;
|
||||
b = (chunk & 258048) >> 12;
|
||||
|
@ -273,11 +273,11 @@ function getBase64ImgData(srcTxt) {
|
|||
function getXPath(elm) {
|
||||
if (!elm) return ''
|
||||
|
||||
var allNodes = document.getElementsByTagName('*');
|
||||
for (var segs = []; elm && elm.nodeType === 1; elm = elm.parentNode) {
|
||||
let allNodes = document.getElementsByTagName('*');
|
||||
for (let segs = []; elm && elm.nodeType === 1; elm = elm.parentNode) {
|
||||
if (elm.hasAttribute('id')) {
|
||||
var uniqueIdCount = 0;
|
||||
for (var n = 0; n < allNodes.length; n++) {
|
||||
let uniqueIdCount = 0;
|
||||
for (let n = 0; n < allNodes.length; n++) {
|
||||
if (allNodes[n].hasAttribute('id') && allNodes[n].id === elm.id) {
|
||||
uniqueIdCount++;
|
||||
}
|
||||
|
@ -306,16 +306,16 @@ function getXPath(elm) {
|
|||
}
|
||||
|
||||
function lookupElementByXPath(path) {
|
||||
var evaluator = new XPathEvaluator();
|
||||
var result = evaluator.evaluate(path, document.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
|
||||
let evaluator = new XPathEvaluator();
|
||||
let result = evaluator.evaluate(path, document.documentElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
|
||||
return result.singleNodeValue;
|
||||
}
|
||||
|
||||
function generateRandomTag(tagLen) {
|
||||
tagLen = tagLen || 5;
|
||||
var text = '';
|
||||
var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
for(var i = 0; i < tagLen; i++) {
|
||||
let text = '';
|
||||
let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
for(let i = 0; i < tagLen; i++) {
|
||||
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
}
|
||||
return text;
|
||||
|
@ -361,13 +361,13 @@ function getPageTitle(title) {
|
|||
}
|
||||
|
||||
function jsonToCss(jsonObj) {
|
||||
var keys = Object.keys(jsonObj);
|
||||
var result = '';
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var tmpJsonObj = jsonObj[keys[i]];
|
||||
var tmpKeys = Object.keys(tmpJsonObj);
|
||||
let keys = Object.keys(jsonObj);
|
||||
let result = '';
|
||||
for (let i = 0; i < keys.length; i++) {
|
||||
let tmpJsonObj = jsonObj[keys[i]];
|
||||
let tmpKeys = Object.keys(tmpJsonObj);
|
||||
result += '.' + keys[i] + ' {';
|
||||
for (var j = 0; j < tmpKeys.length; j++) {
|
||||
for (let j = 0; j < tmpKeys.length; j++) {
|
||||
result += tmpKeys[j] + ':' + tmpJsonObj[tmpKeys[j]] + ';';
|
||||
}
|
||||
result += '} ';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue