Aileyu 发表于 2022-8-18 17:00:35

求助怎么拖动这个图片

链接 https://jingyan.baidu.com/edit/content
先右侧上传图片,再拖到左侧去(好像需要登录百度账号才能上传)


我先用.dispatchEvent(new MouseEvent("mousedown", { bubbles: 1 }))点击图片这一步有效

然后mousemove,再mouseup这两步一直无效

steven026 发表于 2022-8-18 17:00:36

最近忙,没空细究,稍微给点思路吧
涉及到MouseEvent的事件基本都很复杂, 因为任何涉及鼠标移动的监听事件都会监听其中的纵、横坐标,然后通过算法进行计算最后达到预期效果
由于MouseEvent的关键属性都是只读的,所以需要通过new Event复制MouseEvent的属性达到模拟效果
**mousedown**(x,y坐标实际上大于0都行,只影响图片显示)
```
let e=new Event("mousedown",{bubbles:true,cancelable:true,cancelBubble:false,composed:true})
e.which=1
e.screenY=e.clientY=e.y=205
e.screenX=e.clientX=e.x=1157
document.querySelector("#WU_FILE_0").dispatchEvent(e)
```
**mouseup**
```
document.querySelector("#WU_FILE_0").dispatchEvent(new Event("mouseup",{bubbles:true}))
```

至于mousemove你自己研究吧,每个页面的方法都不一样,一般都需要逆向源码,比较复杂

Aileyu 发表于 2022-8-18 17:01:24

求助大佬@steven026

李恒道 发表于 2022-8-18 20:36:57

网站基于backbonejs做构建的
可以考虑先翻阅源代码找到实例注入点
然后直接拿到对应实例做原生函数劫持

Aileyu 发表于 2022-8-18 21:57:43

steven026 发表于 2022-8-18 20:49
最近忙,没空细究,稍微给点思路吧
涉及到MouseEvent的事件基本都很复杂, 因为任何涉及鼠标移动的监听 ...

多谢指点,已经弄好了
mousemove加上目的地的坐标,就可以了
new MouseEvent("mousemove", { bubbles: true, clientX: a.left + 1, clientY: a.top + 1 })
页: [1]
查看完整版本: 求助怎么拖动这个图片