考虑一下,我使用Shadow DOM隐藏其内部div-soup和布局的元素很少.
即使是艰难的,它们也是不同的,它们共享相同的CSS样式表,因为它们使用的是相同的元素集,这些元素应该以一致的方式进行样式化.例如,这可以是CSS框架(引导程序).
问题是这个样式表非常大.
在许多Shadow Roots(在SD V1中)之间分享如此大样式表的最有效方法是什么?
我创建了一个自定义组件,并尝试xtype="richtext"在我的对话框中的multifiled中使用RTE().
现在,当我尝试删除项目,或者在关闭对话框并重新打开后添加另一个对话框既不会关闭,也不会使用确定按钮保存数据.
dialog.xml:
<myField
jcr:primaryType="cq:Widget"
name="./myField"
xtype="multifield">
<fieldConfig
jcr:primaryType="cq:Widget"
xtype="richtext">
</fieldConfig>
</myField>
Run Code Online (Sandbox Code Playgroud)
Sham HC在AEM FAQ上发布了2个解决方案:
- 使用
textfield而不是arichtext或尝试不使用richtextamultifield.如果
richtext在multifield需要再下面跟随在你的开发envirnoment验证.覆盖/libs/cq/ui/widgets/source/widgets/form/RichText.js在方法syncValue(第910行)的重叠文件中,将[1]替换为[2].
Run Code Online (Sandbox Code Playgroud)[1] this.el.dom.value = html; [2] if(this.el.dom){this.el.dom.value = html;}
问题是我想在不改变Adobe代码的情况下使用make it.
我想找到给定元素的 DOM 范围。换句话说,包含它的文档或文档片段。
有没有比下面的代码更好/更快的东西?
function getRootNode( element ){
if( document.contains(element) ){
return document;
}
var root = element;
while( root.parentNode ){
root = root.parentNode;
}
return root;
}
Run Code Online (Sandbox Code Playgroud)