奇葩的Chrome问题,一次点击,结果被执行两次,版本35.0.1916.153 m

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇葩的Chrome问题,一次点击,结果被执行两次,版本35.0.1916.153 m相关的知识,希望对你有一定的参考价值。

很奇怪的问题,现象为鼠标 点击一次 应该只执行一次 事件,结果浏览器会执行两次,例如上微博,点击某条微博的 回复 ,按照常理会下拉出 回复 的文字输入框以供输入文字内容,但不到 1 秒的时间回复框又自动隐藏了(按常理这个过程是再次点击鼠标才会发生的事件)。
我使用插件管理把所有插件禁用,故障依旧。
把浏览器删除,重新安装,故障消失,但通过账号把浏览器插件和其他信息同步完全后,故障又来了。
奇葩啊。。。。。。。。。。这啥问题各位知道吗?
分析了微博源代码,如下:
<a status="hide" action-type="replycomment" action-data="ouid=1840842672&cid=3727307632442073&mid=3727290129512930&content=阿sUshu&ispower=1&status_owner_user=1849396160" href="javascript:;">回复</a>

默认回复框是隐藏的,点击 回复 status=show,回复框显示,但1秒的时间,它又会自动变成 hide 隐藏状态

参考技术A 把浏览器删除,重新安装,故障消失,但通过账号把浏览器插件和其他信息同步完全后,故障又来了

明显不是浏览器本身的问题呀,检查你装的扩展吧追问

是,我也这么觉得。但是我把所有扩展禁用,故障仍然存在,怎么解释呢?

参考技术B 你好, 我也是35.版本, , 跟你的故障一模一样- - qq空间回复也是, 百度音乐盒暂停键也是, 点击后过一秒左右自动点击了一样- ,, 你的好了吗?追问

好了,处理方式为:卸载chrome,重装,把各种插件清理了一遍,也不知道是插件清理弄好的还是卸载chrome重装弄好的,总之,最后就好了。。。。。。。。

两次点击后调用 didDeselectRowAt [重复]

【中文标题】两次点击后调用 didDeselectRowAt [重复]【英文标题】:didDeselectRowAt gets called after two taps [duplicate] 【发布时间】:2019-04-04 15:49:41 【问题描述】:

在第一次点击后,该行被突出显示(灰色背景),然后我必须点击以下任何一行来执行 segue。

我确实得到了正确的读数,例如 indexPath.row 返回 0,如果我最初点击第一行开始,然后我接下来点击哪一行以使其工作无关紧要。

它是UITableViewController的子类

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) 
    // delegate?.onSelect(users![indexPath.row])
    print("selected %d", indexPath.row)
    self.performSegue(withIdentifier: "segueToUserForm", sender: users![indexPath.row])

我确实从模拟器的硬件菜单中删除了所有内容和设置。

【问题讨论】:

你不想实现didSelectRowAt吗? 对不起,我没有得到问题,我确实想实施,不知道我在这里缺少什么。 didDeselectRowAt != didSelectRowAt 哦,是的,smh,大声笑 :) 谢谢伙计,这个解决了,浪费了很多时间。 【参考方案1】:

您似乎正在使用didDeselectRowAt。这意味着此代码不是在第一次点击时选择 tableCell 后调用的,而是在第二次点击时取消选择时调用。因此,您的代码不应该是这样的:

    override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) 
        // delegate?.onSelect(users![indexPath.row])
        print("selected %d", indexPath.row)
        self.performSegue(withIdentifier: "segueToUserForm", sender: users![indexPath.row])
    

但是这个:

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
        // delegate?.onSelect(users![indexPath.row])
        print("selected %d", indexPath.row)
        self.performSegue(withIdentifier: "segueToUserForm", sender: users![indexPath.row])
    

当然,didDeselectRowAt 在特定情况下很有用,但是,它似乎对您的情况没有用。简而言之,将didDeselctRowAt替换为didSelectRowAt

【讨论】:

【参考方案2】:

您应该使用didSelectRowAt 而不是didDeselectRowAt 来执行segue。 didDeselectRowAt 在第二次点击时触发,因为第一次点击触发didSelectRowAt

  override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
       //Your Code
    

【讨论】:

以上是关于奇葩的Chrome问题,一次点击,结果被执行两次,版本35.0.1916.153 m的主要内容,如果未能解决你的问题,请参考以下文章

前端的事件冒泡(例如点击一次onclick事件执行两次)解决办法

apache+tomcat集群出现的两次请求问题解决方案

JS: javascript 点击事件执行两次js问题 ,解决jquery绑定click事件出现点击一次执行两次问题

js如何阻止onclick点击事件响应两次

解决jquery绑定click事件出现点击一次执行两次问题

tap点击一次,内部程序执行两次,多次