当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何在项目中全局拦截url的跳转?

淳于亦
2023-12-15

如何通过全局拦截特定格式的url跳转
重写window.location.href
window.open等跳转方式的进行拦截

共有4个答案

宰父跃
2023-12-15

试一下这个:

https://www.runoob.com/jsref/event-onhashchange.html
周奇
2023-12-15

可以通过serviceWorker的fetch事件拦截包括url跳转在内的所有请求

sw.addEventListener('fetch', (event) => {  const url = new URL(event.request.url); // 拦截到的请求地址  if (url.pathname === '/aasd') {    // 将请求响应变为'hello world'    event.respondWith(new Response('hello world'));    return;  }  // 返回html响应  event.respondWith(    new Response('<html><head></head><body><h1>hello world</h1></body></html>', {      headers: {        'Content-Type': 'text/html',      },    }),  );});

serviceWorker的注册和使用方法见MDN文档

爱乐邦
2023-12-15

无法重写window.location.href,window.open等跳转方式
建议你跳转到目标页再做判断

齐浩淼
2023-12-15

在项目中全局拦截 URL 的跳转,可以通过全局定义一个 JavaScript 函数,然后在页面中所有需要进行拦截的跳转处调用此函数。

以下是一个示例代码:

window.myInterceptor = function(url) {    // 在这里对 url 进行处理,例如判断其格式是否符合要求    if (url.match(/特定格式/)) {        // 拦截跳转        return false; // 或者可以返回一个新的 URL    } else {        // 正常跳转        return true;    }}// 在页面中所有需要进行拦截的跳转处调用此函数window.location.href = window.myInterceptor(window.location.href);window.open = function() {    var originalOpen = window.open;    window.open = function(url) {        url = window.myInterceptor(url);        if (url === false) {            return false; // 拦截跳转        } else {            return originalOpen.apply(this, arguments);        }    }    return originalOpen;}(window.open);

在这个示例中,window.myInterceptor 函数是全局拦截函数。当 URL 的格式符合要求时,该函数会返回 false,从而拦截跳转;否则,该函数会返回 true,表示正常跳转。在页面中所有需要进行拦截的跳转处(例如 window.location.hrefwindow.open),都调用了 window.myInterceptor 函数。这样就可以实现全局拦截特定格式的 URL 跳转。

 类似资料:
  • spring-boot附带的嵌入式tomcat有一个相当奇怪的问题,特别是它的错误处理。 这就给我留下了404、500等默认Tomcat错误页,最后用 如前所述,除了HTTP状态404之外,此设置对所有异常都很好。知道是什么机制创建这些页面以及为什么我的异常解析器没有被调用吗?这是在Spring Boot 1.2.5上发布的。使用Spring MVC 4.1.7发布并嵌入Tomcat 8.0.23

  • axios如何在使用全局拦截的情况下为某个请求单独设置响应拦截?如图,这里响应出现异常,会直接弹出异常提示,但是某些接口我不想直接弹异常,所以有没有什么比较好的方法能再度拦截一下?本来想着如果可以传入一个回调,没传就执行默认异常逻辑,但是琢磨了半天好像这个回调不好实现啊

  • 问题内容: 我看到 一吨 的条目在我的Tomcat日志(样品粘贴下面)。这些在几个月前进行次要版本升级(Spring Security 4.2.4,IIRC)后开始出现在我的日志文件中,因此,这显然是默认情况下启用的Spring新安全功能。这里报告了类似的问题,但是我的问题专门涉及如何在控制器中拦截这些异常。有一个针对此问题的Spring Security错误记录(提供一种处理RequestRej

  • 我在Tomcat日志中看到大量条目(示例粘贴在下面)。在几个月前的一次小版本升级(Spring Security 4.2.4,IIRC)后,这些功能开始出现在我的日志文件中,因此这显然是Spring中默认启用的一个新的安全特性。这里报告了一个类似的问题,但我的问题具体涉及如何在控制器中拦截这些异常。这个问题有一个Spring Securitybug(提供一种处理RequestRejectedExc

  • 我正在尝试使用,我想将添加到我的像这样: 但下面的不起作用: 我的服务器是asp。net webApi。请帮忙,我该怎么办?

  • 问题内容: 有没有办法在JavaScript中拦截粘贴事件并获取原始值,对其进行更改并将关联的DOM元素的值设置为修改后的值? 例如,我有一个用户试图复制并粘贴带空格的字符串,并且字符串的长度超过了我的文本框的最大长度。我想截取文本,删除空格,然后使用更改值设置文本框的值。 这可能吗? 问题答案: 您可以通过附加“ onpaste”处理程序来拦截粘贴事件,并通过在IE中使用“ ”或在其他浏览器中使