Firefox上的Polymer和Disqus:Window.getComputedStyle的参数1没有实现接口Element

时间:2015-02-15 10:13:22

标签: firefox polymer jekyll disqus

我目前正在使用Polymer框架和Jekyll构建网站。我在页面底部添加了Disqus块,它在Chrome浏览器中运行良好。

{% if site.disqus %}
<div class="comments">
    <div id="disqus_thread"></div>
    <script type="text/javascript">

        var disqus_shortname = '{{ site.disqus }}';
        var disqus_identifier = "{{ page.url }}";

        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    </script>
    <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
{% endif %}

但是当我在Firefox 35.0.1上打开它时,我在控制台中收到以下消息:

TypeError: Argument 1 of Window.getComputedStyle does not implement interface Element.

Disqus条评论无法加载。我在Polymer docs website上的Disqus条评论中发现了相同的行为,因此您可以查看它。任何想法如何解决?或者这是一个错误?

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题,遇到了这个帖子:

https://github.com/webcomponents/webcomponentsjs/issues/89

Mikanoshi 在线程末尾提供了一个有用的要点,说明了修复:

var disqus_shortname = ''; /* Your shortname */
var DISQUS = ...           /* From the start of DISQUS' embed.js */

(function(document) {
    DISQUS.define(...      /* The rest of DISQUS' embed.js */
})(wrap(document));

不幸的是我们必须修改DISQUS的embed.js,但它似乎有效!

为什么这是必要的解释在这里:http://webcomponents.org/polyfills/shadow-dom/(包装和解包)。