javascript - 如何使用 Javascript 选择 Google 搜索栏
问题描述
我正在使用 Chrome 扩展“快捷键”来编写快捷方式可执行的 Javascript 代码,该代码在浏览 Google 搜索时选择 Google 搜索栏。重要提示:我不是要选择 Chrome 的地址栏,而是选择 Google 网站上的实际搜索栏。我使用“inspect element”找到了搜索栏元素,并发现它位于类“a4bIc”的 div 中。搜索栏元素的第一个标签是“输入”。所以我的代码是这样的:
var x = document.querySelectorAll("div.a4bIc input")[document.selectedResultId]
除了它不选择搜索栏。我错过了什么?
解决方案
三个建议:
查看 google 搜索 HTML 的结构方式,您最好使用“名称”属性以可靠地选择搜索输入。您要使用的选择器是
[name='q']
querySelectorAll
返回一个NodeList
对象。如果我没记错的话,那么您不能NodeList
使用 ID 访问 a 的成员(这与非常相似的HTMLCollection
对象形成对比。别担心,如果它看起来令人困惑,那是因为它是!)。对于像这样的简单查找,我建议使用querySelector
它将直接返回第一个选定的节点。根据您想要对 google 搜索栏执行的操作,您似乎需要对
.focus()
和进行某种组合.click()
。在我刚才的测试中,我只能通过触发焦点然后单击之后来获得建议的下拉列表。
将所有这三个放在一起:
function openGoogleSearchUI(){
let searchInput = document.querySelector("[name='q']");
searchInput.focus();
searchInput.click();
}
当然,您可以根据自己的需要调整对输入的处理方式,或者直接使用该document.querySelector
行获取输入元素。
告诫 Emptor:我只能看到这在我刚刚收到的谷歌搜索 UI 上,在英国,在桌面 Chrome 上有效。不能保证它在未来或在不同的设备上都能正常工作,因为谷歌可以随时更改他们认为合适的代码结构。
推荐阅读
- python-3.x - 如何将过滤器集类添加到查看类:django
- reactjs - 如何从 React js 中的 API 调用中获取多个数据?
- azure - genericResources().listByResourceGroup 和 disks().listByResourceGroup 返回的资源计数不同
- apache-spark - 需要从流处理器中的源事件中扇出数千个事件
- c++ - IDA Pro 在新版本的二进制文件中查找具有不同地址的函数?
- phpmailer - 使用 PHPMailer 发送画布图像的问题
- javascript - 用于电话身份验证的 Firebase 它适用于移动调试,但不适用于发布签名的 APK
- ios - 如何将 iOS 私有应用程序切换到公共应用程序
- html - 我尝试对齐复选框旁边的文本,但复选框显得太小
- bash - 如何检查 git URL 的有效性而忽略请求凭据?