使用AnguarJS,我想在当前网站点击的链接中存在特定主机名时随时调用函数。用户将继续点击链接,但该功能将在后台调用。
$ routeProvider是最好的方向吗?它需要在整个网站范围内,这就是我认为AngularJS routeProvider可能工作的原因。我先问,因为我是Angular的新手。我试图避免必须识别每个点击事件以在链接中侦听此特定域名,因为有太多的地方,并且它们会因为正在使用CMS而更改。
谢谢!
答案 0 :(得分:0)
使用$routeProvider
,您只能在同一域和AngularJS上下文中定义路由。那是隐含的。所以你只能"捕获" #
符号(hashbang)之后的网址
正如我所说,你可能需要这样做:
$(body).on('click', 'a', function(e) {
var url = $(this).attr('url');
// now do something with url
});
为了简单起见我使用jQuery,出于性能原因使用event delegation。
请注意,如果链接更改了当前页面的网址,则不会工作。这意味着您正在导航到另一个页面并销毁当前的一个页面,即运行此JS代码并监听click
个事件的页面。这仅适用于您在链接上使用target="_blank"
的情况。
使其适用于外部和target="_self"
链接的方法:
$(body).on('click', 'a', function(e) {
var url = $(this).attr('url');
if(url === 'http://example.com/') {
e.preventDefault();
// 1. do some stuff, even AJAX
// 2. after stuff completes:
window.location = url;
}
});
不幸的是,这意味着用户必须等到(1)发生的任何事情才能真正进入新网址。如果您正在做的事情很快(不到一秒钟),也许隐藏在页面上可见的所有内容以及e.preventDefault
就足够了。