iframe 本地html ,其中html里的超链接不可点击


遇到的问题

iframe 本地html ,其中html里的超链接不可点击
最新ob 。win11.问题时间20250610

预期的效果

使用html render 插件 直接打开html文件 ,其超链接是可以点击
目前我测试了iframe 本地html ,内嵌到普通笔记中 ,内嵌到白板块中 均不可点击超链接

<iframe src="file:///U:/BaiduSyncdisk/CG_HOU_OB/常用网站.html" width="100%" height="100%"></iframe>

如何破?请大佬解答

  • obsidian出于安全性限制了对本地资源html的访问,具体报错为app.js:1 Not allowed to load local resource。也许某些版本可以,但不可靠
  • 只能通过插件绕过,也可以尝试使用dataviewjs渲染

在本问题中。dataviewjs 如何去使用 :rose:

~~~dataviewjs
const fs = require('fs');

// 读取文件内容
fs.readFile("C:/Example/example.html", 'utf8', (err, data) => {  if (err) {
    // 如果读取文件失败,输出错误信息
    dv.span('读取文件失败:', err);
    return;
  } else {
  dv.span(data)
  }
})
~~~
  • 把这段代码粘贴到笔记中,并把里面的C:/Example/example.html换成对应的html文件路径


上方是直接内嵌的渲染效果
下方是dataviewjs块的渲染效果.dataciew的效果不正确 。需要设置什么参数吗
dataviewjs 点击跳转是支持的


直接写html标签 也是可以跳转的,但只能使用行内样式 。每个元素都得复制一遍相同的style,这很不方便修改

我之前的方案是使用dv.span()直接渲染html文件,相当于整个html文件塞进一个<span></span>块中,也许这样的话html文件中的css就失效了(具体机制没研究过,也许是dataview插件直接覆盖掉了?)

你可以通过修改css来实现(如何修改参见 https://forum-zh.obsidian.md/t/topic/43996等):

  • 如果是直接写html标签,你可以为元素定义class,比如<a class = “bookmark”>书签内容</a>,然后在css文件中指定bookmark类的具体样式:
.bookmark {
    /* 具体样式设置 */
}
  • 如果是使用dataviewjs的dv.span()渲染,用开发者工具查找书签的元素级别,然后在css文件中指定该元素级别的具体样式。