V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ksssdh123
V2EX  ›  Android

webview 如何获取 用户点击的元素

  •  
  •   ksssdh123 · 2019-07-31 16:10:36 +08:00 · 5471 次点击
    这是一个创建于 1702 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试用过 webview 自带的 HitTestResult,但是获取不到那种没点击事件的元素

    目前我的需求是 当点击某个元素,能获取其元素的文本内容(其实我就是想监控网页内容的文本)

    jsoup 的作为解析 html 很强大 但是还不够智能,我想通过用户点击某个元素,然后设置下某个规则,例如价格小于或高于等等,然后通知用户

    我知道有个 App 已经实现了,但我不知道是如何做的,反编译都是混淆过的 还是没看明白,如下图

    https://pic.t6q.com/up/2016-12/2016127111140108200.png

    红圈圈里的 就是用户点击的 html 元素

    10 条回复    2019-08-01 08:50:11 +08:00
    pual
        1
    pual  
       2019-07-31 16:22:21 +08:00 via Android   ❤️ 1
    webview 为元素添加点击监听的 js 代码,在那段代码中调用 webview 注解的 addjavascriptinterface 的 Java 方法
    ksssdh123
        2
    ksssdh123  
    OP
       2019-07-31 16:30:36 +08:00
    @pual 每一个元素 都加一个?
    loginbygoogle
        3
    loginbygoogle  
       2019-07-31 16:30:47 +08:00   ❤️ 1
    js 注入
    shawndev
        4
    shawndev  
       2019-07-31 16:49:05 +08:00
    注入 onclick, onfocus 方法?
    crystom
        5
    crystom  
       2019-07-31 17:16:08 +08:00
    给整个 body 添加一次点击事件,好像事件中 e.target 是被点击的元素
    wsxyeah
        6
    wsxyeah  
       2019-07-31 18:00:53 +08:00 via iPhone
    直接在页面里用 js 做咯,不要用 native 做
    ho121
        7
    ho121  
       2019-07-31 18:16:23 +08:00 via Android
    没做过,不过可以提供一个思路:微信长按保存图片
    deepdark
        8
    deepdark  
       2019-07-31 18:18:09 +08:00 via Android
    js 里做就好了
    sarlanori
        9
    sarlanori  
       2019-08-01 08:10:56 +08:00
    我说个笨办法,直接获取点击位置坐标,遍历所有元素,判断点击点在哪个元素里就可以了
    ksssdh123
        10
    ksssdh123  
    OP
       2019-08-01 08:50:11 +08:00
    最终解决思路 就是需要进行监控的元素 设置一下 onclick 事件,然后回调原生 其实就是 js 注入 感谢 1,3 楼
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   994 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:10 · PVG 06:10 · LAX 15:10 · JFK 18:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.