问题 #2069💬 已回答提出于 2019年6月6日作者 Sparragus0 个反应

'allowScripts: true' 仍然会删除<script>标签

快速解答作者 dosponsor

你能给出这个问题的解决方案吗?

阅读下方完整回答 ↓

问题

大家好。感谢你创建并维护这个了不起的项目。🙏虫子描述 我有一个模块,可以插入这里指定的脚本:https://grapesjs.com/docs/modules/Components-js.html#basic-scripts 当我把方块拖到画布时,组件确实会把脚本附加到自己身上。但是,当我重新加载页面时,脚本已经不存在了。 我见过多个问题被讨论过,似乎都通过添加 “''js const editor = Grapesjs.init({ ... allowScripts:1, }); ``` 示例: https://github.com/artf/grapesjs/issues/1123 https://github.com/artf/grapesjs/issues/837 https://github.com/artf/grapesjs/issues/721 然而,'allowScripts: 1' 似乎对我没用。预料中 我预计它们<script>还会在那里,因为“allowScript: 1”。可重复案例 这里有一个可以重现该漏洞的CodeSandbox:https://codesandbox.io/s/compassionate-gagarin-dclo5 繁殖步骤:拖拽一个“按钮”方块到画布上。点击按钮。它显示了警报。如果你打开显示代码的模态,可以看到脚本的代码。重新加载...

回答(3)

dosponsor2019年6月13日

你能给出这个问题的解决方案吗?

artf2019年6月14日

谢谢你的报告@Sparragus 问题在于你在 Blocks 里用“脚本”函数。当编辑器尝试存储 JSON 时,结构会被序列化,但函数不可序列化,因此该组件会存储一个空的“脚本”字符串。 我知道文档里是这么说的,但我们用块只是为了展示快速示例,实际上你应该总是为带脚本的模块创建一个自定义组件。 “''js 编辑。DomComponents.addType('foo-button', { 型号:{ 默认值:{ 标签名称:“button”, 名称:“纽扣”, 内容:“按钮” 脚本:function() { this.addEventListener(“点击”,() => { 警报(“喵”); }...

Sparragus2019年6月24日

@artf 感谢你的澄清。干杯。

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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