我正在使用CSS多列布局(css3),当然在Chrome,FF和Safari中都能正常使用。 但是许多人仍然使用IE9,我们需要支持它。
对于IE支持,我包括来自this site的csscolumns
polyfill js。
当在IE9中加载此polyfill时,我在控制台中收到此错误消息:
'unable to get value of the property 'indexof' object is null or undefined'
调试器突出显示此代码作为问题来源:
function loadCssCache(s,callback){if(s.href.indexOf(location.host)==-1||s.href.indexOf(location.host)>50){return false}
调用loadCssCache
的代码是:
for (var i = 0; i < document.styleSheets.length; i++) {
loadCssCache(document.styleSheets[i], "parseStylesheets")
}
s.href.indexOf
是失败的地方。有没有其他人遇到这个问题?或者可能知道问题是什么?
答案 0 :(得分:3)
spec似乎表明内联样式表(style
属性中包含的内容)包含在document.styleSheets
列表中。相关部分可能是这样的:
对于内联样式表,此属性的值为null。
因此,如果您在任何元素上都有任何样式属性,那么在尝试从.href
读取值时,您将收到空引用错误。
一个简单的解决方法是添加null
的检查:
function loadCssCache(s,callback){
if(s.href == null || s.href.indexOf(location.host) == -1 || s.href.indexOf(location.host) > 50){
return false
}
}