js操作svg

1,功能 鼠标位置放大缩小、支持拖动。

通过java后台服务返回的url,然后加载到浏览器中。(谷歌)



主要代码:

因为必须要等svg全部加载完以后才能初始话svgdoc。

注册事件要注册到svg元素上(最外层的div接受不到冒泡阻止了)

//成功返回之后调用的函数
success:function(retUrl){
var url = retUrl;
var embed = document.createElement("EMBED");
embed.setAttribute("id", "svgDoc");
embed.setAttribute("type", "image/svg+xml");
embed.setAttribute("src", "file/1.svg");
embed.setAttribute("width","100%");
embed.setAttribute("height","100%");

document.getElementById("test").appendChild(embed);
embed.οnlοad=function(){
var doc = document.getElementById("svgDoc"); //获得embed标签对象  
var svg = doc.getSVGDocument();//获得svg的document对象 
svgDoc=svg.documentElement;//获取svg文档对象
//像素转单位  屏幕像素跟svg单位互相转换
_bBox=svgDoc.getAttribute("viewBox");

svgDoc.οnclick=function(e){
debugger;

console.log("click");
}
needMove=false;
startX=0;
startY=0;
svgDoc.οnmοusedοwn=function(event){
      needMove=true;  
console.log("down");
startX = event.pageX;  
startY = event.pageY;
      }
     svgDoc.οnmοusemοve=function(event){
      if(!needMove) return;
var vBoxArr=svgDoc.getAttribute("viewBox").split(/\s+/);
var unit=pxToSvgUnit();
var str=(vBoxArr[0]*1-event.pageX*unit.x+startX*unit.x)+" "+(vBoxArr[1]*1-event.pageY*unit.y+startY*unit.y)+" "+vBoxArr[2]+" "+vBoxArr[3];
console.log(str);
svgDoc.setAttribute("viewBox", str);

startX=event.pageX;
startY=event.pageY;

     }
 svgDoc.οnmοuseup=function(event){
  needMove=false;
console.log("up");
 }



}
},


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值