2

我有一个由 swiffy 转换的 html 文件,如下所示:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Swiffy output</title>
    <script src="https://www.gstatic.com/swiffy/v5.2/runtime.js"></script>
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="viewport" content="width=device-width, target-densityDpi=device-dpi, initial-scale=1.0, user-scalable=no, maximum-scale=1.0">
    <script>
        function stopScrolling( touchEvent ) { alert("wa");touchEvent.preventDefault(); }
        document.addEventListener('touchstart', stopScrolling , false );
        document.addEventListener('touchmove', stopScrolling , false );
    </script>
    <script>
      swiffyobject = ...........
    </script>
    <style>html, body {width: 100%; height: 100%}</style>
  </head>

  <body style="margin: 0;">
    <div id="swiffycontainer" style="width: 100%; height: 100%">
    </div>
    <script>
      var stage = new swiffy.Stage(document.getElementById('swiffycontainer'),
                                   swiffyobject);

      stage.start();
    </script>
  </body>
</html>

在 iPhone 中查看此页面时,该网站在 Safari 中不断跳动,并阻止我进行更高级的触摸检测。

我在 stackoverflow 上进行了搜索,大多数答案都提出了相同的建议:听 touchstart/touchmove 并调用 preventDefault。

如上所示,我已经实现了 tat,但它似乎根本不起作用。

有什么帮助吗?如何防止在 Safari 中弹跳?

4

1 回答 1

0

// 在 stage.start(); 之后 插入以下代码。

var timer = setInterval(noBounce, 1000);
function noBounce(){
    if($("#swiffycontainer svg").length > 0){
        $("#swiffycontainer").children().on('touchmove', function(event){
            event.preventDefault();return false;
        });  
    clearInterval(timer);
    }
}
于 2013-10-29T08:43:17.760 回答