javascript – 在HTML文档中使用鼠标滚轮进行SVG缩放

我正在尝试在 HTML文档中实现一项功能,允许用户拖放嵌入式SVG“框”…

我找到了this,但很快意识到该脚本只适用于普通的SVG文件……

请记住,我是一名程序员,过去半年一直专注于汇编语言.从那里跳到这个抽象的环境是一个巨大的进步.

现在我正试图找出缩放部分:

所以我制作了这个HTML文件

<html>
<head>
    <title>Forum Risk! v0.0.1</title>
    <script type="text/javascript" src="svglib.js" ></script>
</head>
<body>
    <!-- SVG embedded directly for example purpose... I'm planning to use <embed> -->
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" onmousewheel="mouseWheelHandler(e);">
        <g id="viewport" transform="matrix(1,1,200,200)" >
            <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
        </g>
    </svg>
</body>

svglib.js的内容是:

var scrollSensitivity = 0.2

function mouseWheelHandler(e) {

    var evt = window.event || e;
    var scroll = evt.detail ? evt.detail * scrollSensitivity : (evt.wheelDelta / 120) * scrollSensitivity;

    var transform = document.getElementById("viewport").getAttribute("transform").replace(/ /g,"");

    var vector = transform.subString(transform.indexOf("("),transform.indexOf(")")).split(",")

    vector[0] = (parseInt(vector[0]) + scroll) + '';
    vector[3] = vector[0];

    document.getElementById("viewport").setAttribute("transform","matrix(".concat(vector.join(),")"));

    return true;

}

我用http://www.javascriptkit.com/javatutors/onmousewheel.shtml作为参考.

但问题是,只要我用Chrome打开HTML文件,SVG就会出现,但是当我用鼠标滚轮滚动时根本没有任何反应……

我完全理解这一切吗?

UPD

修正版http://jsfiddle.net/dfsq/GJsbD/

解决方法

解决了!显然onmousewheel属性没有正确处理事件…至少我必须通过javascript直接添加一个事件监听器到SVG画布才能使它工作!

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...