符号与ID
你准确地指出了 GrapesJS 中关于符号实例中ID处理的一个基本设计决策。这种行为虽然对维护有效HTML至关重要,但在样式和属性引用等特定用例中确实存在挑战。让我们来拆解一下问题和解决方案。 根本原因: GrapesJS的ID再生政策 GrapesJS 在每次符号实例化或复制时,有意为符号实例内的元素重新生成唯一 ID。这是有意设计的,旨在防止单个 HTML 文档中多个元素拥有相同的 ID。存在重复 ID 是无效的 HTML,可能导致浏览器、CSS 和 JavaScript 交互中出现不可预测的行为。目标是确保最终渲染的 HTML 文档中的每个元素都有唯一 ID,这对网页标准至关重要。 第1期:因ID变更导致样式丢失 问题:...
阅读下方完整回答 ↓问题
@artf 符号中带有ID的元素在不同实例中ID不同。这很合理,因为在 HTML 文档中出现多个元素同一个 ID 是不好的 第1期 在不同页面上使用符号的用户会感到困惑,因为他们“添加”到元素ID上的样式“丢失”了。你有没有想过在这个使用场景下有什么干净利落的解决办法? 第2期 另一个有问题的用例是当我有一个符号多次出现,且内侧是它 一个带有 ID 的元素 对该ID的引用,例如“<label for=”the-id“>” 解决方案 然后它坏了,就没法让它正常工作了,对吧?不幸的是,我还有其他类似的使用场景。对于这些,我想我可以在我的“grapesjs-symbols”插件里实现一个变通方法(一个符号的封装器,带UI等),它会检测到符号被粘贴或复制,并更改符号内部的ID引用,但我不确定“for”属性是否会同步然后在所有地方更改......你怎么看? 编辑:我试过了,似乎对“第2期”效果不错 [此“变通”代码](https://github.com/silexlabs/grapesjs-symbols/commit/805425c2220ca20f2845b7858c1a386d145fa782) [插件在线演示及变通方法](https://codepen.io/lexoyo/pen/xxJGEwo) 在这些问题之后,我理解ID在中长期内不会得到解决,对吧? #6659 #4837...
回答(1)
你准确地指出了 GrapesJS 中关于符号实例中ID处理的一个基本设计决策。这种行为虽然对维护有效HTML至关重要,但在样式和属性引用等特定用例中确实存在挑战。让我们来拆解一下问题和解决方案。 根本原因: GrapesJS的ID再生政策 GrapesJS 在每次符号实例化或复制时,有意为符号实例内的元素重新生成唯一 ID。这是有意设计的,旨在防止单个 HTML 文档中多个元素拥有相同的 ID。存在重复 ID 是无效的 HTML,可能导致浏览器、CSS 和 JavaScript 交互中出现不可预测的行为。目标是确保最终渲染的 HTML 文档中的每个元素都有唯一 ID,这对网页标准至关重要。...
相关问答
通过相似的问题讨论继续研究。
问题 #6549
Couldnt Resize image
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://codepen.io/Harshsne/pen/YPXdgmj 描述一下那个虫子 如何复现这个漏洞? 上传图片 将其切换为移动视图 调整图像大小 ![图...
问题 #3612
Grapesjs滑块按钮、标签键都没有按预期工作
版本 0.17.19(grapesjs) 版本 0.1.5(grapesjs-lory-slider) 版本 1.0.6(grapesjs-tabs) 你能重现演示中的bug吗? 不 预期的行为是什么? 我应该能在点击前一、下一页按钮和标签名时,浏览不同的幻灯片和标签页。 详细...
问题 #5788
CSS 属性的默认值
GrapesJS版本[X] 我确认使用最新版本GrapesJS你用的是什么浏览器? 无可复制演示链接 https://grapesjs.com/demo.html描述一下那个虫子 大家好,!!<3 如何复现这个漏洞?打开[grapesjs官方网页演示](https://grap...
问题 #4455
'panel-devices' and 'panel-switcher' conflicting
GrapesJS版本 [X] 我确认使用最新版本GrapesJS 你用的是什么浏览器? Chrome 版本 103.0.5060.114 可复制演示链接 https://codepen.io/Dominic_M/pen/eYMgqyw 描述一下那个虫子 如何复现这个漏洞?关注G...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
浏览插件分类
直接跳转到市场上的插件分类页面。