在Firefox中,jQuery包含webcomponents.js polyfill失败

时间:2016-03-21 23:53:09

标签: javascript jquery web-component

我正在使用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;
&#13;
&#13;

编辑:显然,这远远超过了眼睛。有些人报告他们在Firefox中看到true而不是false。不清楚根本原因是什么。

1 个答案:

答案 0 :(得分:0)

问题是由WebComponent的ShadowDOM polyfill引起的。如果使用webcomponents-lite.js而不是完整的polyfill,则所有都按预期工作。

参考:https://github.com/webcomponents/webcomponentsjs#element-wrapping--unwrapping-limitations-

怀疑有问题的元素已被包裹,这会破坏其参考。