【发布时间】:2020-08-29 15:13:41
【问题描述】:
这是一个示例,我使用方法element.appendChild() 然后继续,就好像元素已被同步追加一样。
但正如日志显示的那样,事实并非如此。至少所有与其渲染相关的浏览器计算都没有完成。
如何在继续执行之前等待元素完全加载?当然在这种情况下睡眠 1000 毫秒是可行的,但在一般情况下这并不可靠。
const serializedSvg = `<svg style="width:100%;height:100%;">
<line x1="25%" y1="25%" x2="75%" y2="75%" style="stroke: rgb(234, 243, 234);stroke-width: 5;"></line>
</svg>`
const svgDom = new DOMParser().parseFromString(serializedSvg, 'text/html').querySelector('svg')
const container = document.querySelector("#container")
container.appendChild(svgDom)
const lineEl = document.querySelector('line')
console.log("fail:" + lineEl.x1.baseVal.value)
setTimeout(() => {
console.log("success:" + lineEl.x1.baseVal.value)
}, 1000)
<div id="container">
</div>
【问题讨论】:
标签: javascript svg dom