我正在使用此功能:

// 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.asinMath.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/

10-10 11:38