在webview中的touch事件出现的bug,for ios



  • 大家可以看到,我这里用了这个方法(injectedJavaScript={methods})在webview中插入了methods这个文件中的js代码

    0_1509528368726_image.png

    然后我长按webview中的某个链接,注意我传了一个e到我的方法中去,并用postMessage方法传给app消息:

    0_1509528481558_image.png
    0_1509528520909_image.png

    app收到消息后,打印了传过来的值:

    0_1509528589848_image.png

    以下是我在chrome 控制台中的信息:

    1、iphone 6 (ios 9.3)

    alt text

    2、iphone 7 (ios 10.3.3)

    alt text

    可以看到以上的e打印出来后,不仅内容严重不相同,而且都没有一个阻止默认事件的方法(e.preventDefault()),我不太清楚rn对于这种需求是如何做处理的,可能思路和我不通,不过我的目的只是为了想要阻止touch某个链接后能不进行跳转

    以上,如果有同学能帮到我,不胜感激!!!


  • administrators

    1、不是所有对象能够调用的方法(preventDefault)都显示在对象里,还有个东西叫做prototype
    2、把所有a标签的href属性移除掉就完了



  • @晴明 首先,非常感谢你能回复我的问题。
    关于问题:a标签的href不能移除,因为我点击的时候是可以跳转的,长按的时候是不进行跳转的呢,关于prototype我进去看过了,也没有我要的那个方法呢?


  • administrators

    到底是要跳转还是不跳转?看不懂



  • @晴明 单击的时候跳转,长按的时候不跳转


  • administrators

    把href属性移到另一个自定义属性,在touch事件中自行计时处理



  • @晴明 解决了,用onShouldStartLoadWithRequest方法拦截,但是我感觉这个方法并不好,如果能直接阻止默认事件的方法就好了



  • @晴明 你说的这个方法我也试过了,会碰到另外的很多坑。不说了,rn的webview好多坑,尤其是for ios


  • administrators

    rn的webview就是系统的webview,跟rn没有任何关系



  • long touch 会跳转?难到不是因为 click?



  • 还有,像 long press 这种很常见的话题,应该 google 看看别人是怎么处理的,因为有些细节你可能没考虑到,而别人已经遇到并解决了。
    https://stackoverflow.com/questions/2625210/long-press-in-javascript



  • @7c00 说:

    https://stackoverflow.com/questions/2625210/long-press-in-javascript

    大哥,你试过了再来回答问题吧



  • @晴明 这样的话,ios的webview下居然没有阻止默认事件触发的方法?震惊!!!



  • @fox19920726 首先,我只是想提供一些建议,因为你的问题描述,我完全不知道你的问题到底是什么、到底要做什么,我根本就没有试的必要。



  • @fox19920726 你展示的代码是在 touchstart 之后 setTimeout postMessage 一个数据给 WebView,然后你说 log 出来严重不同?到底要表达什么呢?

    然后你又说了你的目的“只是为了想要阻止touch某个链接后能不进行跳转”,这和你展示的代码出入也太大了吧,所以说,如果你的目的只是阻止点击连接后跳转的行为,你真的觉得你现在的方向是对的?



  • @7c00 鸡同鸭讲,震惊


登录后回复