首页 > 解决方案 > 如何等待按钮可点击

问题描述

我有一个小的 chrome 扩展作为初学者项目,我有以下情况。

假设我有一个带有搜索按钮的网站。按下按钮时,会出现两个选项:

  1. 有一个搜索结果带有一个名为“购买”的按钮
  2. 没有搜索结果,也没有“购买”按钮

这是我拥有的代码的相关部分:

        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 秒。

标签: javascripthtmlgoogle-chrome-extensionasync-await

解决方案


当您使用时,await您需要制作函数async来不断监听监听事件。

就像这个胎面提到的


推荐阅读