Vanessa 2022-08-30 23:05:19 +08:00
parent 2ae2bb0d52
commit 9a135bb7ef

View file

@ -1,5 +1,5 @@
class ProtyleHtml extends HTMLElement {
constructor() {
constructor () {
super()
const shadowRoot = this.attachShadow({mode: 'open'})
this.display = this.shadowRoot
@ -7,22 +7,31 @@ class ProtyleHtml extends HTMLElement {
this.display.innerHTML = dataContent
}
static get observedAttributes() {
static get observedAttributes () {
return ['data-content']
}
attributeChangedCallback(name, oldValue, newValue) {
attributeChangedCallback (name, oldValue, newValue) {
if (name === 'data-content') {
const dataContent = Lute.UnEscapeHTMLStr(this.getAttribute('data-content'))
const dataContent = Lute.UnEscapeHTMLStr(
this.getAttribute('data-content'))
this.display.innerHTML = dataContent
const el = document.createElement('div');
el.innerHTML = dataContent;
const scripts = el.getElementsByTagName("script")
const el = document.createElement('div')
el.innerHTML = dataContent
const scripts = el.getElementsByTagName('script')
let fatalHTML = ''
for (let i = 0; i < scripts.length; i++) {
const s = document.createElement('script');
s.textContent = scripts[i].textContent;
this.display.appendChild(s);
const s = document.createElement('script')
if (scripts[i].textContent.indexOf('document.write') > -1) {
fatalHTML += `<div style="color:#d23f31;font-size: 12px">${window.siyuan.languages.htmlBlockError}</div><textarea style="width: 100%;box-sizing: border-box;height: 120px"><script>${scripts[i].textContent}</script></textarea>`
} else {
s.textContent = scripts[i].textContent
}
this.display.appendChild(s)
}
if (fatalHTML) {
this.display.innerHTML += fatalHTML
}
}
}