奇葩的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 隐藏状态
明显不是浏览器本身的问题呀,检查你装的扩展吧追问
是,我也这么觉得。但是我把所有扩展禁用,故障仍然存在,怎么解释呢?
参考技术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事件执行两次)解决办法