Why CSS3Pie + Prototype 1.6.1 crashes Internet Explorer 8

I am trying to understand why Css3Pie, used in conjunction with Prototype 1.6.1, crashes Internet Explorer 8. Why is this happening?

Relevant Information

  • CSS3Pie [ source ] is an Internet Explorer (htc) behavior that adds support for CSS3 properties such as border-radius, gradients, etc.
  • The crash only occurs in IE8, not in IE7 or earlier.
  • Failure only occurs in Prototype 1.6.1 [ source ], and not Prototype 1.6.0.x
  • The crash occurs immediately when the page loads, I can’t even interact with the page.
  • The developer knows about this problem, but since he believes that this is a problem with the prototype (maybe), he may not want to fix it. There is a forum post and a GitHub bug report , but don't add a lot of information.
+6
javascript prototypejs internet-explorer-8 css3 html-components
source share
2 answers

This crash in IE8 , which appears to have been fixed in a recent Windows update, was caused by a prototype using prototypes of DOM objects, followed by CSS3Pie behavior. In Protoype 1.6.1, you can get around it by setting the ElementExtensions and SpecificElementExtensions to false in the Prototype.BrowserFeatures object and changing the checkDeficiency function to return true immediately.

+5
source share

This is a good start, but then it stops working under other browsers (i.e. firefox, chrome). Instead, you should add a check for IE 8 at the beginning of each function (ElementExtensions, SpecificElementExtensions, checkDeficiency), then return false for the anonymous Extensions functions and return true for the checkDeficiency function.

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)); })(); 
+1
source share

All Articles