javascript - 无法获取属性值 'indexOf'

标签 javascript html css internet-explorer polyfills

我正在使用 CSS 多列布局 (css3),当然它在 Chrome、FF 和 Safari 中工作得很好。 但许多人仍然使用 IE9,我们有支持它的要求。

对于 IE 支持,我包含来自 this sitecsscolumns polyfill js .

当这个 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")
}

s.href.indexOf 是失败的地方。还有其他人遇到过这个问题吗?或者可能知道问题是什么?

最佳答案

spec似乎表明内联样式表(style 属性中包含的内容)包含在 document.styleSheets 列表中。相关部分大概是这样的:

For inline style sheets, the value of this attribute is 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
    }
}

关于javascript - 无法获取属性值 'indexOf',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21304913/

相关文章:

php - HTML select 函数,post 到 php 然后在 html 上用 ajax 显示

javascript - 我正在尝试将变量的值存储在 window.onload 上以供以后使用

javascript - 跨浏览器比较文档位置

javascript - Node-ffi 为 C 函数抛出 'undefined symbol' 错误

javascript - 解析 REST API 与解析 JavaScript SDK

javascript - 检查时的 JQuery 复选框值

javascript - 转义 HTML 标记属性中的双引号

javascript - 如何逐字符显示文本框中的文本?

具有多个复选框的 jQuery 过滤器

css - 有没有一种方法可以使用 item-icon-right 将多个图标放在元素类的右侧?