Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
19
rated 0 times [  25] [ 6]  / answers: 1 / hits: 7861  / 11 Years ago, thu, january 23, 2014, 12:00:00

I'm using CSS multi-column layout (css3) which of course works fine in Chrome, FF and Safari.
But many still use IE9 and we have a requirement to support it.



For IE support I include csscolumns polyfill js from this site.



When this polyfill loads in IE9 I get this error message in the console:



'unable to get value of the property 'indexof' object is null or undefined'


And the debugger highlights this code as the problem source:



function loadCssCache(s,callback){if(s.href.indexOf(location.host)==-1||s.href.indexOf(location.host)>50){return false}


And the code that calls loadCssCache is:



for (var i = 0; i < document.styleSheets.length; i++) {
loadCssCache(document.styleSheets[i], parseStylesheets)
}


s.href.indexOf is where it fails. Has anyone else run into this problem? Or may know what the problem can be?


More From » html

 Answers
19

The spec seems to indicate that inline stylesheets (the content contained within a style attribute) are included in the document.styleSheets list. The relevant part is probably this:




For inline style sheets, the value of this attribute is null.




So, if you have any style attributes on any elements, you're going to get a null-reference error when trying to read a value off .href.



A simple fix is to add a check for null:



function loadCssCache(s,callback){
if(s.href == null || s.href.indexOf(location.host) == -1 || s.href.indexOf(location.host) > 50){
return false
}
}

[#48427] Wednesday, January 22, 2014, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
myakylas

Total Points: 66
Total Questions: 85
Total Answers: 95

Location: Guadeloupe
Member since Sat, Aug 22, 2020
4 Years ago
myakylas questions
Thu, Apr 28, 22, 00:00, 2 Years ago
Thu, Apr 8, 21, 00:00, 3 Years ago
Sat, Sep 19, 20, 00:00, 4 Years ago
;