我正在使用Chrome扩展程序,并希望运行一个函数,从用户单击的元素生成选择器。
在静态页面上它正在工作,问题是,当用户单击 SPA 站点中的链接时,路由比函数更快,然后在函数生成选择器之前 DOM 更改。
到目前为止我尝试过:
- 我试图使用此扩展 API 拦截后台页面中的导航
chrome.webNavigation.onBeforeNavigate.addListener(function callback).
它正确地拦截了它,但我找不到任何方法来延迟导航。导航仍照常进行。
- 我也尝试使用 webRequest 扩展 API 阻止请求,但在函数完成运行后我无法禁用阻止。(我不认为这是正确的方法(
我的问题:
- 是否可以延迟导航? js 中的 setTimeout 是异步的,因此不会以任何方式阻止导航。 在路由更改之前,
- 有没有其他方法可以等待函数完成运行(承诺无济于事,因为路由在解决之前仍然会发生(?
我可以建议你一个后备。
如果您在应用选择器生成功能之前保存元素 x 和 y 坐标,那么当它失败时,您可以返回到以前的路线并在具有保存的 x 和 y 坐标的元素上应用选择器生成吗?
仅当选择器生成功能是瓶颈时,它才可能起作用。