#2657 notebook文件markdown中纯html中的图片显示问题

Merged
lewis merged 1 commits from fix-2591 into V20220815 1 year ago
  1. +66
    -3
      templates/repo/view_file.tmpl

+ 66
- 3
templates/repo/view_file.tmpl View File

@@ -133,16 +133,79 @@ function submitDeleteForm() {
$("#delete-file-form").submit()
}
}


const baseUrls = {};
const justDomain = /^[^:]+:\/*[^/]*$/;
const protocol = /^([^:]+:)[\s\S]*$/;
const domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
const originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
function rtrim(str, c, invert) {
const l = str.length;
if (l === 0) {
return '';
}
let suffLen = 0;
while (suffLen < l) {
const currChar = str.charAt(l - suffLen - 1);
if (currChar === c && !invert) {
suffLen++;
} else if (currChar !== c && invert) {
suffLen++;
} else {
break;
}
}

return str.slice(0, l - suffLen);
}
function resolveUrl(base, href) {
if (!baseUrls[' ' + base]) {
if (justDomain.test(base)) {
baseUrls[' ' + base] = base + '/';
} else {
baseUrls[' ' + base] = rtrim(base, '/', true);
}
}
base = baseUrls[' ' + base];
const relativeBase = base.indexOf(':') === -1;

if (href.substring(0, 2) === '//') {
if (relativeBase) {
return href;
}
return base.replace(protocol, '$1') + href;
} else if (href.charAt(0) === '/') {
if (relativeBase) {
return href;
}
return base.replace(domain, '$1') + href;
} else {
return base + href;
}
}
function showNoteBook(){
var isNoteBook = {{.IsNoteBook}}
var isNoteBook = {{.IsNoteBook}};
if (isNoteBook) {
var jsonStr = "{{.FileContent}}"
var jsonStr = "{{.FileContent}}";
var baseUrl={{.FileParentURL}};
nb.markdown.setOptions({
baseUrl: {{.FileParentURL}}
baseUrl: baseUrl
});
var notebook = nb.parse(JSON.parse(jsonStr));
var rendered = notebook.render();
$("#notebook").append(rendered);

$("#notebook img").each(function(){

var oldSrc = $(this).attr('src');
if (!originIndependentUrl.test(oldSrc)){
var newSrc=resolveUrl(baseUrl,oldSrc);
$(this).attr('src', newSrc);

}

});
Prism.highlightAll();
}
}


Loading…
Cancel
Save