整个 HTML 块是在 shadowRoot
下,JavaScript 在其中想要找到元素就要先在最外部的 document
中寻找,不特殊情况下都是挂载在 protyle-html
元素下,所以需要手动在其中加个 id
或者 class
document.getElementById("protyle-html-name").shadowRoot
当找到 shadowRoot
之后就随便玩了,appendChild
,querySelector
,就都可以用了。
<button onclick="displayDate()">现在的时间是?</button>
<p id="demo"></p>
<script>
function displayDate() {
document.getElementById("texdt").shadowRoot.querySelector('#demo').innerHTML= Date();
}
</script>
我写了一个小功能,可以直接使用(siyuan 版本为 v1.9.7-alpha1)其中的 texdt 就是为手动给 protyle-html
赋予了一个 id,可以复现。
ps:貌似 1.9.6 的时候就能了,但是当时没看懂 shadowRoot
的文档
pps:不知道是不是 bug,在编辑器中写的内容是
<button onclick="displayDate()">现在的时间是?</button>
<p id="demo"></p>
<script>
function displayDate() {
document.getElementById("texdt").shadowRoot.querySelector('#demo').innerHTML= Date();
}
</script>
但是整体跑完后就变成了
整个 script
变成了俩
ppps:晚上还是得来点小啤酒和烤串
pppps:在二群的多少都看到过我说 html 这件事,我正儿八经的想法是使用这个做出来一个首页,但是我在纠结这到底意义大不大,所以我选择把这个问题抛给大家。(我说的首页就是固定一个页面在里面写一个特别大的块,聚合动态时间,全文件树实时加载,最近编写文件制定啥的,暂时就想到这些)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于