6

我试图了解为什么 Css3Pie 与 Prototype 1.6.1 一起使用会导致 Internet Explorer 8 崩溃。为什么会发生这种情况?

相关信息

  • CSS3Pie [源代码] 是一种 Internet Explorer 行为 (htc),它增加了对 CSS3 属性(如边框半径、渐变等)的支持。
  • 崩溃只发生在 IE8 中,而不是 IE7 或更早版本。
  • 崩溃只发生在 Prototype 1.6.1 [ source code ],而不是 Prototype 1.6.0.x
  • 崩溃在页面加载时立即发生,我什至无法与页面交互。
  • 开发人员意识到了这个问题,但由于他认为这是一个原型问题(可能是),他可能并不急于修复它。论坛帖子GitHub 错误报告都有,但都没有添加太多信息。
4

2 回答 2

5

这个IE8 崩溃似乎已在最近的 Windows 更新中得到修复,它是由 Prototype 对 DOM 对象原型的修补以及应用 CSS3Pie 行为引发的。在 Protoype 1.6.1 中,可以通过在 Prototype.BrowserFeatures 对象上将 ElementExtensions 和 SpecificElementExtensions 设置为 false 并修改 checkDeficiency 函数以立即返回 true 来解决此问题。

于 2011-01-21T00:04:29.483 回答
1

这是一个好的开始,但随后它停止在其他浏览器下工作(即 firefox、chrome)。相反,您应该在每个函数(ElementExtensions、SpecificElementExtensions、checkDeficiency)的开头添加对 IE 8 的检查,然后为 Extensions 匿名函数返回 false 并为 checkDeficiency 函数返回 true。

ElementExtensions: (function() {
 if (isIE8) return false;
...

SpecificElementExtensions: (function() {
 if (isIE8) return false;
...

function checkDeficiency(tagName) {
 if (isIE8) return true;
...

var isIE8 = (function(){
    return ((navigator.userAgent.indexOf('MSIE')!=-1) && (document.documentMode==8));
})();
于 2012-05-23T20:19:51.717 回答