Javascript 无法获取属性的值';指数';
我使用的是CSS多列布局(css3),当然在Chrome、FF和Safari中也能很好地工作。 但是很多人仍然使用IE9,我们需要支持它 对于IE支持,我包括Javascript 无法获取属性的值';指数';,javascript,html,css,internet-explorer,polyfills,Javascript,Html,Css,Internet Explorer,Polyfills,我使用的是CSS多列布局(css3),当然在Chrome、FF和Safari中也能很好地工作。 但是很多人仍然使用IE9,我们需要支持它 对于IE支持,我包括csscolumnspolyfill js from 当此polyfill加载到IE9中时,我在控制台中收到以下错误消息: 'unable to get value of the property 'indexof' object is null or undefined' 调试器会突出显示此代码作为问题源: function loadC
csscolumns
polyfill js from
当此polyfill加载到IE9中时,我在控制台中收到以下错误消息:
'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")
}
for(var i=0;i
s.href.indexOf
是它失败的地方。还有其他人遇到过这个问题吗?或者可能知道问题出在哪里?似乎表明内联样式表(包含在样式
属性中的内容)包含在文档.样式表
列表中。相关部分可能是:
对于内联样式表,此属性的值为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
}
}
线索在错误消息中。问题不在于
indexOf
,错误消息说s.href
为空或未定义。你需要弄清楚这是为什么。我在csscolumns的div上没有使用内联样式,在另一个div上只使用“height”内联样式来制作动画。一个解决方案是手动更新href以查找空值。@gorndocument
指的是整个页面,因此如果任何元素具有内联样式,它将被包括在内。通过将console.log(document.styleSheets)
添加到script
元素之一,可以查看浏览器试图解析的内容。是的,document.styleSheets[0]
是测试它的好方法。问题是我加载脚本太早了。css还没有准备好:|