当前位置: 首页 > 面试题库 >

window.location.href更改时的事件

厉文栋
2023-03-14
问题内容

我正在为某个网站编写Greasemonkey脚本,该脚本有时会进行修改location.href

在页面上进行更改时,如何获取事件(通过window.addEventListener或类似方式)window.location.href?我还需要访问指向新的/修改的URL的文档的DOM。

我看到了其他涉及超时和轮询的解决方案,但如果可能的话,我想避免这种情况。


问题答案:

popstate事件:

当活动历史记录条目更改时,将触发popstate事件。[…]popstate事件仅通过执行浏览器操作(例如单击“后退”按钮(或在JavaScript中调用history.back()))来触发

因此,在使用时侦听popstate事件并发送popstate事件history.pushState()应该足以对href更改采取措施:

window.addEventListener('popstate', listener);

const pushUrl = (href) => {
  history.pushState({}, '', href);
  window.dispatchEvent(new Event('popstate'));
};


 类似资料:
  • 我正在尝试做一些非常简单的事情,在点击按钮时更改文本。 我似乎无法使用它,有人能告诉我添加ActionListener的正确位置吗? 主要类别 atmGUI类 编辑: 这是产生的错误 类型new ActionListener(){}必须实现继承的抽象方法ActionListener.actionPerform(ActionEvent)

  • 问题内容: JavaScript的有什么区别 和 功能? 问题答案: 如果我没记错的话,请使用POST数据重新加载当前页面,但不包含POST数据。 如@W3Max在下面的注释中所述,如果URL中有锚点(#),则不会重新加载页面-在这种情况下,您必须使用。 另外,如下面的@Mic所指出的那样,采用了另一个参数,以便使用浏览器将跳过缓存并从服务器重新加载页面。将执行相反的操作,并在可能的情况下从缓存加

  • 问题内容: 我正在寻找一种观察窗口内部宽度大小变化的方法。我尝试了以下操作,但没有成功: 有什么建议? 问题答案: 我们可以使用jQuery来做到这一点: 请注意,将事件处理程序绑定在可以 重新创建的 范围内(例如ng- repeat范围,指令范围等)时,在销毁该范围时应取消绑定事件处理程序。如果不执行此操作,则每次重新创建作用域(重新运行控制器)时,都会再添加1个处理程序,从而导致意外行为和泄漏

  • 我依赖eclipse插件中的选择服务来响应TableViewer中的选择更改。 这很好,但有时我会更改表中的数据(而选择不会更改)。不幸的是,更改表中的数据不会触发此事件。执行此操作后,我尝试手动将选择设置为第一项: 这不会导致选择更改事件,即使选择确实更改。

  • 问题内容: 我有一个div,其内容可能会以各种方式更改:例如,可以通过innerHTML重新加载其整个内容,或者可以通过DOM方法添加节点。反过来,这可能是通过本地javascript发生的,也可能是通过调用jQuery API或其他库间接发生的。 我希望在div的内容改变为执行一些代码,但我 绝对没有控制 上 如何 将改变。确实,我正在设计一个可供其他人使用的小部件,他们可以自由选择自己喜欢的d

  • 我使用primeface(3.0)调度程序组件。 http://www.primefaces.org/showcase-labs/ui/schedule.jsf 正如我们在这里看到的,有一些事件是用蓝色创建的。 现在我想在独特性的基础上改变这些活动的颜色。例如,每个员工都会有一个唯一的ID。 比如说,员工ID 1事件的颜色将为蓝色,ID 2事件的颜色将为红色,依此类推。 如何将颜色应用于支持bea