我正在使用WebComponent's Polyfill。
以下代码段在最新稳定的Chrome中运行良好,但在最新稳定的Firefox中失败。
这似乎是一个核心功能,我觉得我做错了什么,但我担心polyfill错误地修改了Sizzle功能。
如果有人对此事有任何见解,请分享。
window.addEventListener('WebComponentsReady', function() {
$(document).ready(function() {
var contains = $.contains(document.documentElement, document.getElementById('root'));
console.log('Contains:', contains);
});
});

<div id='root'></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/0.7.20/webcomponents.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
&#13;
编辑:显然,这远远超过了眼睛。有些人报告他们在Firefox中看到
true
而不是false
。不清楚根本原因是什么。
答案 0 :(得分:0)
问题是由WebComponent的ShadowDOM polyfill引起的。如果使用webcomponents-lite.js
而不是完整的polyfill,则所有都按预期工作。
参考:https://github.com/webcomponents/webcomponentsjs#element-wrapping--unwrapping-limitations-
怀疑有问题的元素已被包裹,这会破坏其参考。