'null'为null或不是对象

时间:2012-10-16 01:55:54

标签: javascript jquery internet-explorer

我有一行代码在IE8及更低版本中无效。

var mediaQueryId = getComputedStyle( document.body, ":after" ).getPropertyValue("content");
var mediaQueryId = mediaQueryId.replace( /"/g, '' ); // 'null' is null or not a object

我尝试使用此修复程序以使其正常工作但我收到此错误:

  

'null'为null或不是对象

这是我的代码:

if (!window.getComputedStyle) {
    window.getComputedStyle = function(el, pseudo) {
        this.el = el;
        this.getPropertyValue = function(prop) {
            var re = /(\-([a-z]){1})/g;
            if (prop == 'float') prop = 'styleFloat';
            if (re.test(prop)) {
                prop = prop.replace(re, function () {
                    return arguments[2].toUpperCase();
                });
            }
            return el.currentStyle[prop] ? el.currentStyle[prop] : null;
        }
        return this;
    }
}

网站为http://www.gablabelle.com/

2 个答案:

答案 0 :(得分:0)

getComputedStyle = function(){
    return el.currentStyle[prop] ? el.currentStyle[prop] : null;
    //                           you are returning null ----^
}

...

getComputedStyle( ... ).getPropertyValue( ... )
null                   .getPropertyValue( ... )

null为null:)

答案 1 :(得分:0)

var mediaQueryId = getComputedStyle( document.body, ":after" )
                      ?getComputedStyle( document.body, ":after" ).getPropertyValue("content")
                      :'';

或类似的东西:

var foundStyle = getComputedStyle( document.body, ":after" );
if (foundStyle) {
   var mediaQueryId = foundStyle.getPropertyValue("content") || '';
   mediaQueryId = mediaQueryId.replace( /"/g, '' ); // 'null' is null or not a object
}