程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了event.preventDefault() 在 iOS 14 及更高版本中表现不同大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决event.preventDefault() 在 iOS 14 及更高版本中表现不同?

开发过程中遇到event.preventDefault() 在 iOS 14 及更高版本中表现不同的问题如何解决?下面主要结合日常开发的经验,给出你关于event.preventDefault() 在 iOS 14 及更高版本中表现不同的解决方法建议,希望对你解决event.preventDefault() 在 iOS 14 及更高版本中表现不同有所启发或帮助;

我正在使用 JavaScript 在 iPad 应用程序中的 WKWebVIEw 中执行操作,该应用程序加载一些本地生成的 HTMLString(比如书中的一个页面作为文本)。像选择一个词这样的用户交互是使用 JavaScript 处理的,如下函数。

WKWebVIEw 还添加了平移手势,以在用户在不同方向上平移每个单词时执行动作(不同角度的不同动作)。

以下代码适用于 以下 iOS 14 版本。但在 iOS 14 以上版本中无法正确调用平移手势(未注册计算角度所需的最小点以执行操作) .

function highlightSELEctedStart(event)  { //ontouchstart 
    
    var clickedobject=elementFromdocumentPoint(event.touches[0].screenX,event.touches[0].screenY);
    var TagID = clickedobject.ID;
    firstNode = clickedobject;
    SELEctClass.classname = 'noSELEct';
    prevIoUsTagID  = TagID;
    deSELEctAllHighlightedElement();
    if (window.getSELEction)
        window.getSELEction().removeAllRanges();
    else if (document.SELEction)
        document.SELEction.empty();
    window.LOCATIOn = "dIDwordSELEcted:"+TagID;
    event.preventDefault();   //<== *This here behaves differently in iOS 14*
}

function highlightSELEctedMove (event) { //ontouchmove
    
    event.preventDefault();
    var clickedobject=elementFromdocumentPoint(event.changedtouches[0].screenX,event.changedtouches[0].screenY);
    
    if  (findposy(firstNodE) == findposy(clickedobject)) {
        clickedobject = clickedobject.childNodes[0];
        var TagID = clickedobject.parentNode.ID;
        lastNode = clickedobject.parentNode;
        SELEctAndHighlightElement(tagID);
        window.LOCATIOn = "dIDwordSELEcted:"+TagID;
    } 
}

如果从 touchstart 函数中删除 event.preventDefault(),平移动作在所有 iOS 版本中都可以正常工作,但是 touchstart 函数执行被延迟(我猜它是在等待双击) .

如果有人能告诉我为什么 iOS 14 或更高版本的行为不同,我将不胜感激。

提前致谢。

解决方法

对于偶然发现相同问题的人。

所有问题都是因为双击缩放的点击延迟,据说当视口更改为下面的代码段时,点击延迟会被禁用。

无论我做什么,WKWebView 在框架外滚动显示其内容都不尊重下面给出的视口

<meta name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no'> 

这会禁用双击缩放,但当用户点击单词时,点击延迟仍然存在。

感谢来自 ftlabs 的 script,它消除了点击延迟,从而使我免于使用 event.preventDefault()

大佬总结

以上是大佬教程为你收集整理的event.preventDefault() 在 iOS 14 及更高版本中表现不同全部内容,希望文章能够帮你解决event.preventDefault() 在 iOS 14 及更高版本中表现不同所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。