【问题标题】:How to get hammer.js to work with svg files without using jquery?如何在不使用 jquery 的情况下让hammer.js 处理 svg 文件?
【发布时间】:2014-07-01 01:31:48
【问题描述】:

我正在尝试使用 svg 文件而不使用任何 jquery 来实现hammer.js。我正在尝试使用来自hammer.js 站点{https://github.com/EightMedia/hammer.js/wiki/Getting-Started} 的示例代码。我有像这样调用的外部javascript。

<script src="javascript/hammer.js" type="text/javascript"></script>

我的javascript如下:

<script type="text/javascript">
  //<![CDATA[       
    var element = document.getElementById("testsvg");
    var hammertime = Hammer(element).on('doubletap', function(event){
                                 alert("doubletap!");
                                 return false;
                               }
                       );
  //]]>
  </script>

我的 svg 如下所示。

<svg version="1.1" id="testsvg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 width="585px" height="230" viewBox="0 0 585 230" enable-background="new 0 0 585 230" xml:space="preserve">
    <rect x="10" y="10" height="210" width="565" style="stroke:#006600; fill: #00cc00"/>
</svg>

一开始,我只是想让任何检测工作。双击时我没有收到任何警报。我还尝试使用桌面上的hammer.fakemultitouch.js 插件来实现这一点。桌面或触摸环境都不做任何事情。 有人知道我可能做错了什么吗?

谢谢, --克里斯托弗

【问题讨论】:

    标签: javascript events svg touch hammer.js


    【解决方案1】:

    首先确保hammer.js 正确加载。如果是,那么您很可能在加载 DOM 之前执行了 javascript。解决此问题的最简单方法是将 &lt;script&gt; 放在关闭 &lt;/body&gt; 标记之前(靠近 html 文件的底部)。您还可以将代码包装在加载事件函数中,例如...

    window.onload = function(){
        var element = document.getElementById("testsvg");
        var hammertime = Hammer(element).on('doubletap', function(event){
            alert("doubletap!");
            return false;
        });
    }
    

    【讨论】:

    • 效果很好。我在正文的开头有脚本。我把它移到最后,它没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2017-11-10
    • 2015-06-21
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多