如何检测Polymer是否在Polymer Dart 1.0.0中使用Shady或Shadow DOM?
阅读本文之后,在Polymer Dart 1.0.0上,阅读当前Polymer Dart默认使用shady dom的事实(这对我来说并不意外),您可以将其更改为使用shadow dom。如果使用shadowdom,我的一些最新元素将无法工作。我想知道如何在运行时检测您是否正在使用shadow或shady dom?我不知道有什么正式的方法,但您可以使用如何检测Polymer是否在Polymer Dart 1.0.0中使用Shady或Shadow DOM?,dart,polymer,dart-polymer,Dart,Polymer,Dart Polymer,阅读本文之后,在Polymer Dart 1.0.0上,阅读当前Polymer Dart默认使用shady dom的事实(这对我来说并不意外),您可以将其更改为使用shadow dom。如果使用shadowdom,我的一些最新元素将无法工作。我想知道如何在运行时检测您是否正在使用shadow或shady dom?我不知道有什么正式的方法,但您可以使用document.querySelector('some-shadowed-element')来查询已知隐藏在自定义元素的shadow dom中的元
document.querySelector('some-shadowed-element')
来查询已知隐藏在自定义元素的shadow dom中的元素,如果发现该元素使用了shady dom,否则它就是shadow dom
在应用程序中不需要区分shady和shadowdom。如果您使用适当的API来操作内容(
new PolymerDom(…)…
),那么您的元素应该可以在两种模式下工作。我似乎已经回答了我自己的问题。我忘了影根。从旧的Polymer Dart迁移到Polymer Dart 1.0.0时,我必须删除对shadowRoot的任何引用,因为它们是空的。如果shadowRoot为null,则使用shadydom,否则为shadowdom。此方法将在元素内部工作
...
bool usesShadowDOM() {
return shadowRoot != null;
}
...
我用这两种方法测试了它
<script>
...
Polymer.dom = 'shadow';
...
</script>
...
Polymer.dom='shadow';
...
及
...
Polymer.dom='shady';
...
它似乎完成了我希望它完成的任务。在
Polymer
对象上设置了一个未记录的布尔标志:
Polymer.Settings.useNativeShadow
它被设置为useShadow&&nativeShadow
,因此它是true
,如果两者都是您请求的阴影DOM,并且浏览器支持它
是的,这是我必须考虑的另一个角度。谢谢你。
Polymer.Settings.useNativeShadow