在ie8中一起使用modernizr和css3pie会导致可见的css3-container文本节点

时间:2012-07-09 08:32:36

标签: fancybox modernizr css3pie

看起来如果修改元素的innerhtml,会出现一个竞争条件,导致css3-container文本节点呈现到屏幕中。我能在网上找到最接近的东西是:

https://groups.google.com/forum/#!msg/knockoutjs/M7sZvSFqD5I/Lg9kpNmvkkgJ http://css3pie.com/forum/viewtopic.php?f=3&t=1531

当我尝试将html作为第一个参数传递时,我遇到了与fancybox相同的问题。

我试图通过这个补丁来解决我的问题:

diff --git a/js/libs/modernizr-2.5.3.js b/js/libs/modernizr-2.5.3.js
index c1a6a9a..0bc0d11 100755
--- a/js/libs/modernizr-2.5.3.js
+++ b/js/libs/modernizr-2.5.3.js
@@ -1071,7 +1071,12 @@ window.Modernizr = (function( window, document, undefined ) {
           //   a 403 response, will cause the tab/window to crash
           // * Script elements appended to fragments will execute when their `src`
           //   or `text` property is set
-          var node = (cache[nodeName] || (cache[nodeName] = docCreateElement(nodeName))).cloneNode();
+          var node;
+          if (nodeName == "css3-container") {
+              node = docCreateElement(nodeName);
+          } else {
+              node = (cache[nodeName] || (cache[nodeName] = docCreateElement(nodeName))).cloneNode();
+          }
           return html5.shivMethods && node.canHaveChildren && !reSkip.test(nodeName) ? frag.appendChild(node) : node;
         };

但是太过于苛刻,还有其他正确的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我在Modernizr 2.5.3上遇到了同样的问题,但升级到Modernizr 2.6.1解决了这个问题。