我正在使用此功能:
// 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'的值:对象为无效或不确定"。这是因为矩阵变量以"未定义"返回,但我需要它返回旋转的价值,我不确定如何获得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);
从矩阵中提取sin和cos。