Javascript 如何延迟或拦截导航更改,直到使用Chrome扩展在DOM上完成一个函数

Javascript 如何延迟或拦截导航更改,直到使用Chrome扩展在DOM上完成一个函数,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在使用Chrome扩展,希望运行一个函数,从用户单击的元素生成选择器 在静态页面上,问题是,当用户单击SPA站点中的链接时,路由比函数快,然后DOM在函数生成选择器之前发生变化 到目前为止我所尝试的: 我尝试使用这个扩展API在后台页面截取导航 chrome.webNavigation.onBeforeNavigate.addListener(函数回调)。 它正确地拦截了它,但我找不到任何方法来延迟导航。导航仍在如常进行 我还尝试使用webRequest扩展API阻止请求,但我无法在函数完成

我正在使用Chrome扩展,希望运行一个函数,从用户单击的元素生成选择器

在静态页面上,问题是,当用户单击SPA站点中的链接时,路由比函数快,然后DOM在函数生成选择器之前发生变化

到目前为止我所尝试的:

  • 我尝试使用这个扩展API在后台页面截取导航
    chrome.webNavigation.onBeforeNavigate.addListener(函数回调)。
  • 它正确地拦截了它,但我找不到任何方法来延迟导航。导航仍在如常进行

  • 我还尝试使用webRequest扩展API阻止请求,但我无法在函数完成运行后禁用阻止。(我不认为这是正确的方式)
  • 我的问题:

  • 有可能延迟导航吗?js中的setTimeout是异步的,因此导航不会以任何方式被阻止
  • 在路由更改之前,是否有其他方法等待函数完成运行(承诺没有帮助,因为路由在解决之前仍然发生)

  • 我可以建议你退后一步

    如果您在应用选择器生成功能之前保存元素x和y坐标,这样当它失败时,您可以返回到上一条路线,并使用保存的x和y坐标在元素上应用选择器生成,这会起作用吗


    只有当选择器生成功能成为瓶颈时,它才可能起作用。

    我可以建议您采取回退措施

    如果您在应用选择器生成功能之前保存元素x和y坐标,这样当它失败时,您可以返回到上一条路线,并使用保存的x和y坐标在元素上应用选择器生成,这会起作用吗


    只有当选择器生成功能成为瓶颈时,它才可能起作用。

    唯一的方法是覆盖站点使用的导航功能,并在浏览器中执行。例如,您可以钩住
    History.prototype.pushState
    。唯一的方法是覆盖站点使用的导航功能,并在中执行。例如,您可以钩住
    History.prototype.pushState