以编程方式禁用移动 Chrome 43 的“触摸搜索”功能

Posted

技术标签:

【中文标题】以编程方式禁用移动 Chrome 43 的“触摸搜索”功能【英文标题】:Disable mobile Chrome 43's "Touch to Search" feature programmatically 【发布时间】:2015-08-19 08:00:53 【问题描述】:

当我在 android 设备上的 Chrome 43 中选择文本时,我会看到“触摸搜索”弹出窗口。我们目前正在为我们网站上的一项功能使用文本选择,而这一新的 Chrome 功能会干扰我们的某些 UI。

从长远来看,我们将开发新的 UI/UX 以与此功能并行工作,但在此期间,我们希望在我们的网络应用程序中禁用它。

我们可以添加某种元标记或 javascript 来关闭它吗?有谁知道这目前是否可行?

【问题讨论】:

【参考方案1】:

这可以通过多种方式进行操作。用户可以按照 PaulI 的建议在 flags 中将其关闭,您可以控制它。

开发者控制,现在有几个选项,但基本的总结是如果我们认为它是一个用户可交互的元素,那么它就不会被启用:

CSS:-webkit-user-select: none; html: 带有aria-role 的任何内容都无法启用搜索功能 tabindex 为 -1 或 > 0 的任何内容

【讨论】:

太棒了,感谢您提供的背景信息。信息量很大! 所以在测试这一点时,我不确定这有什么作用。我尝试将 tabindex/aria-role 应用于单个元素、body 标记和包裹 body 的 div 容器。搜索仍会显示在突出显示处。 我已经更新了它 -webkit 前缀。 tabindex 在jsbin.com/subora/latest 中工作,但体验很差。 Aria-role 应该可以工作,但看起来不行 感谢您设置测试页面!我正在运行 Android 5.0.1 的三星 Galaxy Note 4 上的 Chrome 43 上对其进行测试。我可以确认对我有用的唯一方法是通过 user-select 属性阻止用户选择,这在某些情况下有效,但在我们的主要用例中无效。我同意 tabindex 是一种糟糕的体验(它对我不起作用)。您是否有任何想法是否会在更高版本的 Chrome 中修复?希望能够添加一个 aria-role 来解决这个问题。感谢您的帮助! @Kinlan 这根本不起作用。来自不可编辑区域的任何文本选择都将发送到搜索小部件。此功能需要由开发人员控制。【参考方案2】:

可能的解决方法是在<button> 标记中换行。如果谈论大块文本,这显然是行不通的,但对于其他元素,如标题、图标和其他小东西,这很好。

【讨论】:

【参考方案3】:

自 2021 年起,无法在 chrome 移动版中禁用触摸搜索(当它由长按文本选择触发时)。 Kinlan 引用的文章显然只涉及通过点击手势触发的触摸搜索。

引用donnd,来自bugs.chromium.org:

关于#2——开发者控制:您提到的 2015 年文章 (https://developers.google.com/web/updates/2015/10/tap-to-search) 侧重于通过点击手势触发。正如您正确指出的那样,它没有解决长按手势触发问题。 Touch to Search 对点击和长按都有响应,但对它们的处理方式不同。我相信你知道,长按手势会激活一整套功能,包括复制、翻译、智能文本选择和网络搜索。站点开发人员可以将其页面文本标记为不可选择,以完全禁用长按手势,但目前无法仅禁用对长按的触摸搜索响应。如果您想与我们合作添加此类功能,请告诉我们,我们将提交单独的功能请求。

【讨论】:

【参考方案4】:

如果您想在具有打开/关闭(切换)动作的菜单中禁用“触摸搜索”,则需要使用 javascript:

event.preventDefault();

【讨论】:

请仔细阅读作者要求的内容。它与打开/关闭切换无关。 我觉得我读得不错。一个交互式元素(事件)我的解决方案很好。请链接:developers.google.com Kortex,是的,你是对的,请原谅我的误解。我在发表评论之前尝试使用 preventDefault() 并没有奏效。它仍然不起作用,但可能是由于其他原因。【参考方案5】:

导航到about:flagschrome:flags 并查找启用上下文搜索

然后切换到禁用并点击底部的重新启动。

【讨论】:

谢谢保罗。我实际上正在寻找一种方法来为访问我们的网络应用程序的用户暂时禁用它。我们有一个“注释栏”,它在 selectionchange 事件上从页面底部向上飞。新的 Touch to Search 栏比我们的栏略大,并且完全覆盖了它。我们希望可以通过编程方式禁用它(CSS/HTML/JS),类似于禁用右键菜单(或替换它)的方式,这样用户就不必做任何事情,而我们当前的 UX 会继续工作。感谢您的快速响应! 这不能回答问题。

以上是关于以编程方式禁用移动 Chrome 43 的“触摸搜索”功能的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式禁用移动网络

以编程方式启用和禁用移动数据的最新更新[重复]

以编程方式禁用 CSS 文本选择

如何以编程方式禁用 Apple Watch 的睡眠模式

iOS 模拟器 - 以编程方式禁用连接硬件键盘

以编程方式访问 Google Chrome 主页或开始页面