思源笔记折腾记录 - 更奇怪的 html 块 - 模板可以传参啦

本贴最后更新于 970 天前,其中的信息可能已经物是人非

更多类似的内容在思源笔记折腾记录 - 稍微汇总一下 - leolee 的回帖 - 链滴 (ld246.com)可以看到,扩展功能有风险的,小心使用嗷

我们之前在

思源笔记折腾记录 -html 块 - 链接卡片 - 链滴 (ld246.com)

弄了一个这样的代码块:


let findHostBlock;
findHostBlock = (element) => {
  try {
    if (element.host) {
      return findHostBlock(element.host);
    }机
    if (
      element.parentNode &&
      element.parentNode.getAttribute &&
      element.parentNode.getAttribute("data-node-id")
    ) {
      return element.parentNode;
    }
    return findHostBlock(element.parentNode);
  } catch (e) {
    return undefined;
  }
};
try {
  class scriptX extends HTMLElement {
    constructor() {
      super();
      this.style.display = "none";
      this.hostBlock = findHostBlock(this);
      if (this.hostBlock) {
        let iife = new Function(`return (hostBlock)=>{${this.innerText}}`)();
        iife(this.hostBlock);
      }
    }
  }
  customElements.define("script-x", scriptX);
} catch (e) {}

之前我们并没有实际用到它,现在就要实际用上了.

这里我们来搞一个会自毁的 html 块

<div>
<script>
let findHostBlock;
findHostBlock = (element) => {
  try {
    if (element.host) {
      return findHostBlock(element.host);
    }机
    if (
      element.parentNode &&
      element.parentNode.getAttribute &&
      element.parentNode.getAttribute("data-node-id")
    ) {
      return element.parentNode;
    }
    return findHostBlock(element.parentNode);
  } catch (e) {
    return undefined;
  }
};
try {
  class scriptX extends HTMLElement {
    constructor() {
      super();
      this.style.display = "none";
      this.hostBlock = findHostBlock(this);
      if (this.hostBlock) {
        let iife = new Function(`return (hostBlock)=>{${this.innerText}}`)();
        iife(this.hostBlock);
      }
    }
  }
  customElements.define("script-x", scriptX);
} catch (e) {}
</script>
<script-x>
	let id = hostBlock.dataset.nodeId
	fetch(
	'/api/block/deleteBlock',
	{
		method:"post",
		body:JSON.stringify({id:id})
	}
	)
</script-x>
</div>

你可以尝试一下把上面那个 html 代码块的内容贴到 html 块里面,你会发现它消失了,或者说根本贴不进去.

那一个根本无法渲染出来的 html 块有什么卵用咧?

我们可以试一下这个

<div>
<script>
let findHostBlock;
findHostBlock = (element) => {
  try {
    if (element.host) {
      return findHostBlock(element.host);
    }
    if (
      element.parentNode &&
      element.parentNode.getAttribute &&
      element.parentNode.getAttribute("data-node-id")
    ) {
      return element.parentNode;
    }
    return findHostBlock(element.parentNode);
  } catch (e) {
    return undefined;
  }
};
try {
  class scriptX extends HTMLElement {
    constructor() {
      super();
      this.style.display = "none";
      this.hostBlock = findHostBlock(this);
      if (this.hostBlock) {
        let iife = new Function(`return (hostBlock)=>{${this.innerText}}`)();
        iife(this.hostBlock);
      }
    }
  }
  customElements.define("script-x", scriptX);
} catch (e) {}
</script>
<script>
//这里可以搞别的事情
</script>
<script-x>
hostBlock.nextElementSibling.setAttribute('style','color:red')
</script-x>
<script-x>
	let id = hostBlock.dataset.nodeId
	fetch(
	'/api/block/deleteBlock',
	{
		method:"post",
		body:JSON.stringify({id:id})
	}
	)
</script-x>
</div>
{: id="20230427014752-jugtp3g"}

{: id="20230427014913-wud8xuf"}

把它保存成一个模板之后, 模板就可以用来当成命令使用了嗷(谨慎操作,多加测试,死了我肯定不管埋)

注意这玩意是没有办法在文档里面写了之后保存成模板的,你只能直接编辑模板......

非常没啥卵用,甚至有点危险,但是可以开开脑洞,模板不能传参的问题,大概可能也许应该可以靠这个来解决........

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28442 引用 • 119761 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    203 引用 • 4024 回帖
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 350 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    194 引用 • 1034 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 6 关注
  • 倾城之链
    23 引用 • 66 回帖 • 189 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    316 引用 • 547 回帖 • 4 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 307 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 193 关注
  • 分享

    有什么新发现就分享给大家吧!

    251 引用 • 1801 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    135 引用 • 798 回帖 • 2 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 565 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 436 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    97 引用 • 155 回帖
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 152 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 404 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 736 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 2 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • V2Ray
    1 引用 • 15 回帖 • 4 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 706 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 517 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 691 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖