javascript - 如何等待按钮可点击
问题描述
我有一个小的 chrome 扩展作为初学者项目,我有以下情况。
假设我有一个带有搜索按钮的网站。按下按钮时,会出现两个选项:
- 有一个搜索结果带有一个名为“购买”的按钮
- 没有搜索结果,也没有“购买”按钮
这是我拥有的代码的相关部分:
mouseEventClick('#search'); // Search btn
await sleep(250); // hard coded sleep timer
// here I need a way to wait for the #buy button is clickable.
try {
mouseEventClick('#buy'); // click buy btn
} catch {
await sleep(750);
mouseEventClick('#back'); // no result - go back to search mask
}
我不想await sleep(250)
让应用程序等待按钮#buy
加载到 DOM 中并且可点击,而不是这样。然后它应该进入try
代码块。
但我不希望它永远等待。我想让它等待最大。1 秒,如果 1 秒#buy
后 btn 没有出现,它仍然应该去尝试。
所以我想要实现的是在点击#search
和搜索结果之间有一个灵活的睡眠定时器,它会一直等到可以点击元素,但不超过 1 秒。
解决方案
当您使用时,await
您需要制作函数async
来不断监听监听事件。
就像这个胎面提到的
推荐阅读
- r - 如何在 R 中创建具有菊花函数的相异矩阵?
- android - Firebase UI 数据库实现
- swift - Swift:尝试添加多个单元格支持的通用可重用集合视图
- php - 如何将数量数组乘以每个项目的价格?
- javascript - 状态字段的 DataTable 列值
- sql - 使用以前的值计算表中行的值
- vue.js - 使用 bootstrap-vue 组件和 bootstrap 3 动态显示/隐藏列
- python - 实例
不受会话约束;属性刷新操作无法进行 - android - 为什么我不能在 lambda 函数下调用 kotlin 挂起函数
- embedded - ROM 内存的校验和计算