作者:淡逸幽悠 | 来源:互联网 | 2023-01-15 15:40
所以我写了这个小应用程序,在其中显示了从Wikipedia获取的一些信息。此提取的HTML内也有链接。
所以我想做的是:
每次用户单击链接时,我都想拦截该链接并执行自定义行为,而不是默认的浏览器重定向。
Angular httpinterceptor中的构建在这里不起作用。我如何获得这种效果?
编辑:似乎我误解了href和http请求的工作方式。我仍然想对应用程序上单击的每个链接进行自定义行为。有没有办法拦截那些“事件”?
编辑:对于Angular 2+解决方案,请看下面我的答案。它是一种拦截标签的服务。
1> rufreakde..:
好了,搜索了一段时间后,我发现了一个“非角度”解决方案:
覆盖Javascript中链接('a')对象的默认行为
因此,我以此创建了一个服务,并将其注入到我的App Root组件中。
import { Injectable } from '@angular/core';
@Injectable() export class HrefInterceptorService {
constructor() {
document.Onclick= this.interceptHref;
}
interceptHref(_event) {
const tEvent = _event || window.event;
const element = tEvent.target || tEvent.srcElement;
if (element.tagName === 'A') {
console.log("intercept!");
return false; // prevent default action and stop event propagation
}
} }
它有点hacky,但相对灵活。