Javascript - 如何停止捏缩放,多点触控输入攻击?

14 javascript windows jquery google-chrome chromium

当前的Google Chrome稳定版本已停止手动阻止缩放缩放,这在旧版本中可能具有以下设置:

chrome://flags/#enable-pinch
Run Code Online (Sandbox Code Playgroud)

我从一些随机的缩放/多点触控输入中获取攻击.

如何告诉JavaScript禁用缩放缩放/多点触控?(保护亭子)

我试过跟随,但没有什么能阻止信息亭忽略捏缩放攻击.

$(document).ready(function() {

  $(document).bind('contextmenu', function()  {
    console.log('NO NO NO. STOP!!!');
    window.location.reload();
    return false;
  });

  $(document).mousedown( function() {
    console.log('NO NO NO. STOP!!!');
    return false; 
  });

});
Run Code Online (Sandbox Code Playgroud)

编辑:

chrome://flags/#enable-pinch - 从未在Google Chrome中使用过.谷歌不应该删除它,社区应该抗议不删除它.

小智 24

我不知道这是否算作完整答案,但我没有代表发表评论.一种选择是为触摸事件设置处理程序 window.addEventListener("touchstart", touchHandler, false);,然后编写touchHandler函数

function touchHandler(event){
    if(event.touches.length > 1){
        //the event is multi-touch
        //you can then prevent the behavior
        event.preventDefault()
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是有关使用触摸事件进行开发的更多信息 https://mobiforge.com/design-development/html5-mobile-web-touch-events 您必须为其他触摸事件设置处理程序以防止默认的缩放缩放行为取决于浏览器.列表可以在这里找到:http://www.quirksmode.org/mobile/default.html

我不知道这对你有用,但值得一试.


Fan*_*nky 7

这是防止在 Chrome 中缩放的方法:

document.addEventListener("touchstart", function(e){
e.preventDefault();
},{passive: false});
Run Code Online (Sandbox Code Playgroud)

也许除了某些元素

document.getElementById('someelement').addEventListener('touchstart', function(e){e.stopPropagation()}, false);
Run Code Online (Sandbox Code Playgroud)

  • 将“touchstart”更改为“touchmove”以允许点击链接,但防止缩放。 (2认同)

use*_*291 5

通过将此meta标签添加到您的中,您应该能够防止用户放大<head>

<meta name="viewport" content="width=device-width, user-scalable=no">
Run Code Online (Sandbox Code Playgroud)

Version 51.0.2704.84 (64-bit)当我使用开发人员工具中的触摸仿真对其进行测试时,我的Google Chrome版本会尊重此设置。

例如:

  1. 通过缩放来缩放的网站:黑客新闻

<meta name="viewport" content="width=device-width, initial-scale=1.0">

  1. 无法通过缩放来缩放的网站:设计师新闻

<meta name="viewport" content="width=device-width, user-scalable=no">

我要评论的是,允许您的用户放大和缩小不应被视为“攻击”。放大对于视力不好的人(或视力障碍者,我不确定正确和礼貌的英语术语是什么)非常重要。

如果禁用自然缩放行为,则应对网页的可读性承担全部责任

  • 不工作。甚至您的链接 - 设计师新闻 - 也可以通过桌面版 Chrome 72.0.3626.109(官方版本)(64 位)中的多点触控进行缩放.. /sf/ask/3455975141/ -元标签 (4认同)
  • 跟随苹果的脚步,所有浏览器现在似乎都会忽略所有限制缩放或最大缩放的视口元标记。我认为将他们认为不受欢迎的功能置于开发人员控制的常识之上非常愚蠢。就像你说的,对可读性承担全部责任”。我猜他们不再相信开发者会负责任地做任何事情。我认为这是公司选择应用程序通过移动浏览器查看其内容的主要原因之一。 (2认同)