在contextmenu右键事件上js模拟触发click,希望通过click事件获取焦点,但现象是执行右键选择完才获取焦点

发布于 2022-09-06 15:37:26 字数 810 浏览 35 评论 0

我想实现右键功能,像qq这样,右键点击图片时,图片被选中,并通过css focus显示选中效果,如下图

clipboard.png


我想通过模拟click事件去触发这个效果,使得window.selection有选中内容,css也能有选中样式,但不管我是用click(),还是用dispathEvent事件触发。实现效果都是,选择完右键菜单项后,图片才获取焦点。
我是vue实现的,我的代码是:

// img 标签绑定@contextmenu="rightHandler"
// methods
   rightHandler(e) {
    e.target.click()
    // 或者这个方法
    // e.target.dispatchEvent(new MouseEvent('click', { 'bubbles': true }))
    this.showMenu() // 其他一系列操作
    }

如果直接用dispathEvent('click'), 能先获取焦点,再显示右键,但是会报错

clipboard.png
求大神们解救,万分感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可爱暴击 2022-09-13 15:37:27

在“EventTarget”上执行“dispatchEvent”失败:第一个参数不是“Event”类型

e.target.dispatchEvent(e.target.createEvent( 'click' ))

木森分化 2022-09-13 15:37:27

自行解决了,在e.target.click() 之后将显示菜单栏函数添加setTimeOut(), 30ms即可
感觉应该有更好的方法,如果有,请添加回答,我会采纳的,谢谢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文