getPropertyValue 在 IE9 中不起作用?
getPropertyValue doesn't wok in IE9?
我想使用 transition
和 transform
制作滑块。我使用 getPropertyValue
检查当前幻灯片。它在 Chrome 中工作正常,但在 IE9 中它显示错误: TypeError: Cannot read property '0' of null
(我用 ** 标记了该行)
Javascript
代码:
var slider = container.querySelector("ul");
function getCurrSliderIndex() {
var text = slider.style.getPropertyValue("transform");
console.log(text);
var pattern = /[0-9]+/;
**var match = pattern.exec(text)[0];**
var intValue = parseInt(match) / width - 1;
return intValue;
}
HTML
代码:
<ul id="primary-slider" class=" iuiSlider fix" style="width: 3794px; height: 271px; transform: translateX(-1084px);">
<li>some content</li>
<li>some content</li>
<li>some content</li>
...
</ul>
这里的问题并不是IE9+支持的getPropertyValue()
功能
但是 CSS 像 transform
这样的属性需要供应商前缀才能跨浏览器工作。为了简化操作,您可以创建处理它们的函数,这样您就不必:
/* Declare these functions to handle the prefixes */
Object.prototype.setPrefixedProperty = function(prop, value){
this.setProperty(prop, value);
this.setProperty('-moz-' + prop, value);
this.setProperty('-webkit-' + prop, value);
this.setProperty('-ms-' + prop, value);
this.setProperty('-o-' + prop, value);
};
Object.prototype.getPrefixedProperty = function(prop){
return this.getPropertyValue(prop)
|| this.getPropertyValue('-moz-' + prop)
|| this.getPropertyValue('-webkit-' + prop)
|| this.getPropertyValue('-ms-' + prop)
|| this.getPropertyValue('-o-' + prop);
};
/* Use them like so: */
var slider = document.querySelector('div');
slider.style.setPrefixedProperty('transform', 'translateX(-1084px)');
var text = slider.style.getPrefixedProperty('transform');
alert(text);
<p>This demo should alert "translateX(-1084px)".</p>
<div></div>
我想使用 transition
和 transform
制作滑块。我使用 getPropertyValue
检查当前幻灯片。它在 Chrome 中工作正常,但在 IE9 中它显示错误: TypeError: Cannot read property '0' of null
(我用 ** 标记了该行)
Javascript
代码:
var slider = container.querySelector("ul");
function getCurrSliderIndex() {
var text = slider.style.getPropertyValue("transform");
console.log(text);
var pattern = /[0-9]+/;
**var match = pattern.exec(text)[0];**
var intValue = parseInt(match) / width - 1;
return intValue;
}
HTML
代码:
<ul id="primary-slider" class=" iuiSlider fix" style="width: 3794px; height: 271px; transform: translateX(-1084px);">
<li>some content</li>
<li>some content</li>
<li>some content</li>
...
</ul>
这里的问题并不是IE9+支持的getPropertyValue()
功能
但是 CSS 像 transform
这样的属性需要供应商前缀才能跨浏览器工作。为了简化操作,您可以创建处理它们的函数,这样您就不必:
/* Declare these functions to handle the prefixes */
Object.prototype.setPrefixedProperty = function(prop, value){
this.setProperty(prop, value);
this.setProperty('-moz-' + prop, value);
this.setProperty('-webkit-' + prop, value);
this.setProperty('-ms-' + prop, value);
this.setProperty('-o-' + prop, value);
};
Object.prototype.getPrefixedProperty = function(prop){
return this.getPropertyValue(prop)
|| this.getPropertyValue('-moz-' + prop)
|| this.getPropertyValue('-webkit-' + prop)
|| this.getPropertyValue('-ms-' + prop)
|| this.getPropertyValue('-o-' + prop);
};
/* Use them like so: */
var slider = document.querySelector('div');
slider.style.setPrefixedProperty('transform', 'translateX(-1084px)');
var text = slider.style.getPrefixedProperty('transform');
alert(text);
<p>This demo should alert "translateX(-1084px)".</p>
<div></div>