我正在尝试在我的网页上获取SVG对象的变换矩阵。这是我用来确保它被四个CSS转换属性中的一个拾取的当前语句:
$("#printdiv svg").each(function(){
var webkitMatrix = false;
var transform = $(this).css("transform");
if (transform == null || transform.indexOf("matrix") == -1)
transform = $(this).css("-ms-transform");
if (transform == null || transform.indexOf("matrix") == -1)
transform = $(this).css("-moz-transform");
if (transform == null || transform.indexOf("matrix") == -1){
transform = $(this).css("-webkit-transform");
webkitMatrix = true;
}
/* do stuff with matrix */
});
(我有一个var“webkitMatrix”的原因是因为如果为true,函数必须以不同的方式解析-webkit-transform
矩阵)
我的问题是(就像我做的大多数事情一样)IE10,Chrome和FireFox选择矩阵就好了,但IE 8/9没有。
在IE9模式/标准和FireFox(最新版本)中使用IE10时,您可以看到将每个CSS属性打印到控制台的结果: (这里更大的版本:http://i.stack.imgur.com/g07q4.png)
是否有我可以使用的东西,可能是filter:
或不同的转换属性,以便我可以获取我的SVG信息?
答案 0 :(得分:0)
<强> IE9 强>
您可以像这样解析SVG矩阵:
svgElement = document.getElementById("mySVG_ID");
var matrixIE = new Array();
matrixIE[0] = svgElement.createSVGMatrix().a;
matrixIE[1] = svgElement.createSVGMatrix().c; //C and B are switched
matrixIE[2] = svgElement.createSVGMatrix().b;
matrixIE[3] = svgElement.createSVGMatrix().d;
matrixIE[4] = $("#mySVG_ID").css("left");
matrixIE[5] = $("#mySVG_ID").css("top");
<强> IE8 强>
Leaflet对不兼容的浏览器使用VML对象而不是SVG对象。 VML元素的类名为.leaflet-vml-shape
。因为我依靠html2canvas
将我的网页渲染为图片,并且html2canvas
在IE8下不起作用,所以我没有理由研究如何解析VML矩阵。