接下来要实现缩放功能,就有了很多的曲折,耗费的时间超出预期。
理论上讲,svg已经经过了xm标准化,可以和dhtml溶为一体了,实际上还是有一些差距的。
ie 的adobe svgviewer就更不用说了,早停止更新了。但是它的功能还是很不错的,怀念啊
Opera上不支持ASV插件的部分功能,例如查看源码、缩放等。
当然svg本身是支持缩放的,方法不只一种。
可以用viewbox,也可以用transform.
查看源码这个功能没有,就比较费劲了。主要影响导出功能。
经过反复尝试,终于也可以看到源码了。原来还是通过innerHTML.
但是需要查看外框的innerhtml,而不能查看svg元素自身的。
不过保存还是个问题,opera不支持SaveAS的命令。
反正演示原型也无所谓,大不了以后传到服务器再下载回来
2basic.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>
图例
</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<!-- legengd.html
1.显示文字、线
2.兼容ie和opera以及chrome frame.myie使用动态embed
chome和opera用create
3.为了保证embed加载完毕,预先进行svg初始化
-->
</head>
<script type="text/javascript" language="javascript" src=".\js\svg.js"></script>
<script>
</script>
<body bgcolor="#ffffff">
<br>
<button onclick="show()">开始</button><br>
<button onclick="zoom(0.5)">缩小2倍cor</button><br>
<button onclick="zoom(2)">放大 2倍cor</button><br>
<button onclick="zoom(1)">还原</button><br>
<button onclick="zoom1(2)">test</button><br>
<button onclick="showsrc()">源码</button><br>
<div id="divsvg"></div>
</body>
<script>
var svg;
var plat;
svg=initSVG(200,200);
function zoom1(h)
{
//svg.setAttribute("viewBox","0 0 "+200/h+" "+200/h);
//var svgdoc=getSVGDocument(svg);
//var plat=svgdoc.getElementById('g1');
//var svg1=document.getElementById("divsvg");
//var plat=svgdoc.getElementById('line1');
//不能用style来放大
//plat.getStyle().setProperty("zoom","2");
//改颜色是可以的,只有ie支持 getStyle函数
//plat.getStyle().setProperty("stroke","red","");
//svg.style.zoom=h;
}
function show(){
//var svg;
//svg=initSVG(200,200);
var svgdoc;
svgdoc=getSVGDocument(svg);
plat=getrootg(svg,svgdoc);
//位置为相对位置
//超出范围会被截掉
//注意多次点,会重复创建
//生成一行文本
curentStyle="stroke:black;fill:white";
createText(svgdoc,5,20,"电路带宽图例",curentStyle);
//生成一个矩形
curentStyle="stroke:black;fill:green";
createrect(svgdoc,100,100,3,curentStyle);
//生成一条线
curentStyle="stroke:black;fill:none;stroke-width:1";
createline(svgdoc,0,0,200,0,curentStyle);
curentStyle="stroke:red;fill:none;stroke-width:3";
createline(svgdoc,0,0,0,200,curentStyle);
curentStyle="stroke:blue;fill:none;stroke-width:5";
createline(svgdoc,0,0,200,200,curentStyle);
curentStyle="stroke:#3366ff;fill:red;stroke-width:5";
createline(svgdoc,100,0,100,200,curentStyle);
}
</script>
</html>