PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

问题 #6038💬 已回答提出于 2024年8月6日作者 dharma-glui0 个反应

像按钮上的Onclick事件这样的内联事件声明正在被移除

快速解答作者 artf

这是出于安全考虑,但你可以用“config.parser.optionsHtml.allowUnsafeAttr”选项禁用它(风险自负):https://github.com/GrapesJS/grapesjs/blob/819bfcf44bb23d51990eba3b4330e9932df59cde/src/parser/config/config.ts#L116

阅读下方完整回答 ↓

问题

GrapesJS 版本

  • 我确认使用最新版本 GrapesJS

你用的是什么浏览器?

铬

可复制演示链接

https://jsfiddle.net/6bn43a05/

描述一下那个虫子

如何复现这个漏洞?

  1. 为HTML标签添加点击事件

预期的行为是什么? 加载到编辑器后不应该删除该事件

目前的行为是什么? 它会从 HTML 中移除点击事件

如果需要执行某些代码以重现该漏洞,请将其粘贴到下面:

// no need to include extra code

同样的问题在这里报告: https://stackoverflow.com/questions/78496572/grapesjs-移除点击属性如何防止-做-做

![截图(37)](https://github.com/user-attachments/assets/0b998130-f734-4d49-8fa7-d420d1010c43)

行为准则

  • 我同意遵守本项目的行为准则

回答(2)

GJS Helper• 2026年5月17日

你遇到的问题是, onclick 属性在加载到 GrapesJS时从 HTML 元素中被移除,这是 GrapesJSHTML净化流程中的一个有意设计的安全功能。 GrapesJS,像许多现代HTML编辑器一样,会去除潜在不安全的属性和标签,以防止跨站脚本(XSS)漏洞,并维护其组件模型的干净、可预测的DOM结构。 像 onclick、 onload、 onerror等内联事件处理程序,通常被认为是现代网页开发中的不良做法,原因在于安全性问题和关注点分离(结构用 HTML,风格用 CSS,行为用 JavaScript)。 GrapesJS的解析器设计用来移除这些处理程序,以强制执行更安全、更易...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。