Javascript 如何使用Angular来劫持点击链接并更改目的地?

Javascript 如何使用Angular来劫持点击链接并更改目的地?,javascript,angularjs,Javascript,Angularjs,我想劫持对链接的点击,插入一个目标URL,然后我想让浏览器像往常一样跟随链接到该目标(no返回false;和nowindow.location.href或window.open).要停止激活链接,您可以使用,这将阻止链接移动到任何地方,并将控制重定向到您的控制器和功能,在那里您可以随心所欲。 对于第二部分,是否要在不更改页面的情况下继续浏览到其他页面?我不知道怎么做,但你仍然可以触发获取请求来获取数据,或者你可以使用Iframes,我认为没有重定向没有其他方法。在我看来,你想要javascrip

我想劫持对链接的点击,插入一个目标URL,然后我想让浏览器像往常一样跟随链接到该目标(no
返回false;
和no
window.location.href
window.open
).

要停止激活链接,您可以使用
,这将阻止链接移动到任何地方,并将控制重定向到您的控制器和功能,在那里您可以随心所欲。
对于第二部分,是否要在不更改页面的情况下继续浏览到其他页面?我不知道怎么做,但你仍然可以触发
获取请求
来获取数据,或者你可以使用
Iframes
,我认为没有重定向没有其他方法。

在我看来,你想要javascript功能而不使用javascript,这对我来说真的没有任何意义。您能否提供一个不使用
窗口
对象或
$window
对象的好理由

如果你必须使用
ngClick
,那你就太倒霉了。但是,如果您只关心在单击应用程序中的链接时能够打开另一个窗口或选项卡,那么您应该查看
ngHref

它允许您在链接中动态定义href属性。所以你可以这样写:

<my-directive>
    <a ng-href="{{getMyLink()}}">Y U NO CLICK?</a>
</my-directive>

这是我知道的唯一一种方法,在通过Angular框架动态定义页面上的链接时,您可以保留默认浏览器功能。

我不确定是否有一种方法可以不使用Javascript中的window.location.href访问任何url…您使用Angular Router吗?您能给我们举个例子吗?如果链接在单击之前被替换,是否也可以,或者是否取决于单击的时间或其他因素?没有更多信息很难说。如果您想让用户去任何地方,您必须使用
窗口。位置
窗口。打开
窗口。很遗憾,请更换
。除非您希望链接触发iFrame的地址。@JoseM和@WASasquatch:我希望原始的对链接的单击像正常一样进行(在同一选项卡、新选项卡或新窗口中打开它,具体取决于用户第一次单击链接的方式)。但是在点击像正常一样进行之前,我想注入修改过的目的地。我不想中断正常的浏览器行为,因此不使用
返回false
事件.preventDefault()
窗口。打开
或类似文件。不使用window或$window的原因是它将覆盖浏览器的默认行为。然后我必须检测用户点击链接的所有方式(左键、中键、鼠标右键、回车键等),并根据这些方式进行路由。而且这不会捕获所有实例(即,使用javascript不可能捕获右键单击并按下上下文菜单中的“在新选项卡中打开链接”)。因此,我不想阻止默认的浏览器行为,而是让它像正常一样,通过修改的目标,如果可能的话..实际上,我尝试了这种ng href方法,问题是一旦你点击了,你就进入了点击事件,更改原始html的href不会影响您所参加活动的href。。您将转到html元素在使用ng href..hmmmm….之前的href目的地。。。。在用户单击以确定他们要去哪里之前,您如何没有足够的信息?也许你应该提供问题范围更广的细节。基本上,这是一个搜索结果列表,在用户点击结果之前,我们不会创建每个搜索结果的记录。然后我们向服务器发出一个$http post请求来创建记录,并获取包含其数据库id的链接。恐怕届时我无法提供进一步的帮助。在我看来,你可以采取两种行动。1) 编写/查找将复制浏览器功能的JavaScript库。2) 在用户单击之前,了解如何获取与页面上的链接相关的信息。
$scope.getMyLink = function() {
  var link = 'http://hostu.rl/'
  // additional logic
  return link;
};