zoukankan      html  css  js  c++  java
  • webcomponentjs和angular兼容小问题

      webcomponentjs下angular.bootstrap(document, ['app])在firefox运行报错。

      由于firefox并不支持ShadowDOM,webcomponentjs作为一个很html5化的js库,对Node等一些基本类型进行了重写,使不支持html5的浏览器能使用html5的功能。

        angular.bootstrap运行之后,angular将对DOM进行遍历,寻找带ng标记的标签并做相应处理。

        当使用了angular-route之后,当angular要把带ng-view的元素替换掉时,出错了。webcomponentjs并没重写document,也就是说document中的childNodes并没被webcomponentjs包装过。angular.bootstrap(document, ['app])是从document这个对象的基础上开始遍历的。当执行replacChild时,由于webcomponentjs的包装就出了问题, newNode时从通过document.createComment生成的, webcomponentjs从写了create-*的方法,newNode是经过ewbcomponentjs包装的,但是firstElementToRemove是从document遍历中得来的元素,并没有被包装,当replaceChild(newNode, firstElmentToRemove)被执行时,就会出错。

        解决这个问题,只需要把angular(document, ['app'])改成angular(document.querySelector('html'),['app'])就行。把遍历源从根本替换掉,querySelector已经被webcomponentjs重写过。

        找这个bug可坑了,一直在chrome下做开发,chrome实现了ShadowDOM,但是其他浏览器还没实现。一跑到Firefox、IE下就出现一堆红字。翻了几个小时源码才找到这个错误。我也不知道这样解决到底对不对,我也是在摸索。尝鲜用polymer开发真心不容易啊。太嫩了,还待提高^_^

  • 相关阅读:
    topcoder srm 633 div1
    HDU 4997 Biconnected (状态压缩DP)
    HDU 5013 City Tour
    BZOJ 3672 [Noi2014]购票 (熟练剖分+凸壳维护)
    BZOJ 1488: [HNOI2009]图的同构 polay
    BZOJ 1565 植物大战僵尸(最大权闭合图)
    iOS加载程序视图的方式
    内存管理2(主讲MRR)
    内存管理1
    排序算法之希尔排序
  • 原文地址:https://www.cnblogs.com/lext/p/4195137.html
Copyright © 2011-2022 走看看