我正在使用此功能:
// function that grabs the elements rotation in all browsers
function getRotationDegrees(obj) {
var matrix = obj.css("-webkit-transform") ||
obj.css("-moz-transform") ||
obj.css("-ms-transform") ||
obj.css("-o-transform") ||
obj.css("transform");
if(matrix !== 'none') {
var values = matrix.split('(')[1].split(')')[0].split(',');
var a = values[0];
var b = values[1];
var angle = Math.round(Math.atan2(b, a) * (180/Math.PI));
} else { var angle = 0; }
return (angle < 0) ? angle +=360 : angle;
}
它可以在任何其他浏览器上正常运行,但是在IE8中会引发此错误“无法获取属性'split'的值:对象为null或未定义”。这是因为矩阵变量以“未定义”形式返回,但是我需要它返回旋转值,但我不确定如何在IE8中获得旋转值,有什么想法吗?
最佳答案
未经测试的解决方案,基于我用来设置IE8中元素旋转的代码:
var matrix = obj.style.filter; // obj is a HTML Element. If you have jQuery, i suppose you could use that to get the filter property
// at this point matrix is a string like this:
'progid:DXImageTransform.Microsoft.Matrix(' +
'M11=' + cos + ', ' +
'M12=' + (-sin) + ', ' +
'M21=' + sin + ', ' +
'M22=' + cos + ', ' +
'sizingMethod="auto expand")';
// where cos and sin are Math.cos(angleInRadians) and Math.sin(angleInRadians)
下一步是获取这些值之一(我想解析字符串),然后使用
Math.asin
或Math.acos
以弧度表示角度。如果需要度数,则需要将其乘以180并除以Math.PI
与您的代码类似,您可以执行以下操作:
var values = matrix.match(/=.*?M/g);
var sin = values[2].substring(1,values[2].length-1);
var cos = values[0].substring(1,values[2].length-1);
从矩阵中提取正弦和余弦
关于javascript - 我正在使用一个函数来获取对象的旋转,但是它在IE8中失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21338291/