Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测Polymer是否在Polymer Dart 1.0.0中使用Shady或Shadow DOM?_Dart_Polymer_Dart Polymer - Fatal编程技术网

如何检测Polymer是否在Polymer Dart 1.0.0中使用Shady或Shadow 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中的元

阅读本文之后,在Polymer Dart 1.0.0上,阅读当前Polymer Dart默认使用shady dom的事实(这对我来说并不意外),您可以将其更改为使用shadow dom。如果使用shadowdom,我的一些最新元素将无法工作。我想知道如何在运行时检测您是否正在使用shadow或shady 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