我有一行代码在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;
}
}
答案 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
}