|
|
@@ -2125,7 +2125,8 @@ pre code {
|
|
|
viewport: viewport ? viewport.content : null,
|
|
|
compressContent: true,
|
|
|
foregroundSave: message.foregroundSave,
|
|
|
- sharePage: message.sharePage
|
|
|
+ sharePage: message.sharePage,
|
|
|
+ documentHeight: document.documentElement.offsetHeight
|
|
|
}), "*");
|
|
|
} else {
|
|
|
if (message.foregroundSave || message.sharePage) {
|
|
|
@@ -3018,7 +3019,16 @@ pre code {
|
|
|
containerElement.classList.add(className);
|
|
|
classesToPreserve.push(className);
|
|
|
});
|
|
|
+ const optionsElement = document.querySelector("script[type=\"application/json\"][" + SCRIPT_OPTIONS + "]");
|
|
|
const article = new Readability(document, { classesToPreserve }).parse();
|
|
|
+ const articleMetadata = Object.assign({}, article);
|
|
|
+ delete articleMetadata.content;
|
|
|
+ delete articleMetadata.textContent;
|
|
|
+ for (const key in articleMetadata) {
|
|
|
+ if (articleMetadata[key] == null) {
|
|
|
+ delete articleMetadata[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
removedElements = [];
|
|
|
removedElementIndex = 0;
|
|
|
document.body.innerHTML = "";
|
|
|
@@ -3026,6 +3036,9 @@ pre code {
|
|
|
const doc = domParser.parseFromString(article.content, "text/html");
|
|
|
const contentEditable = document.body.contentEditable;
|
|
|
document.documentElement.replaceChild(doc.body, document.body);
|
|
|
+ if (optionsElement) {
|
|
|
+ document.body.appendChild(optionsElement);
|
|
|
+ }
|
|
|
document.querySelectorAll(NOTE_TAGNAME).forEach(containerElement => {
|
|
|
const noteId = (Array.from(containerElement.classList).find(className => /singlefile-note-id-\d+/.test(className))).split("singlefile-note-id-")[1];
|
|
|
containerElement.classList.remove("singlefile-note-id-" + noteId);
|
|
|
@@ -3057,6 +3070,15 @@ pre code {
|
|
|
titleElement.classList.add("reader-title");
|
|
|
titleElement.textContent = article.title;
|
|
|
document.body.insertBefore(titleElement, document.body.firstChild);
|
|
|
+ const existingMetaDataElement = document.querySelector("script[id=singlefile-readability-metadata]");
|
|
|
+ if (existingMetaDataElement) {
|
|
|
+ existingMetaDataElement.remove();
|
|
|
+ }
|
|
|
+ const metaDataElement = document.createElement("script");
|
|
|
+ metaDataElement.type = "application/json";
|
|
|
+ metaDataElement.id = "singlefile-readability-metadata";
|
|
|
+ metaDataElement.textContent = JSON.stringify(articleMetadata, null, 2);
|
|
|
+ document.head.appendChild(metaDataElement);
|
|
|
document.querySelectorAll("a[href]").forEach(element => {
|
|
|
const href = element.getAttribute("href").trim();
|
|
|
if (href.startsWith(document.baseURI + "#")) {
|