停止javascript中的重定向

Stop redirecting in javascript

本文关键字:重定向 javascript 停止      更新时间:2023-09-26

我正在开发一个包含在sharepoint应用程序中的web部件,我需要在某些情况下停止重定向。但是它不工作,我正在尝试使用

$('a').click(function(event){
                event.preventDefault();
                event.stopImmediatePropagation();
                return false;
            });

执行,重定向完成。我怎么能打破它?

它的目的是:当用户改变页面上的东西时,我需要询问他是否想继续,然后阻止他可能点击的其他链接的任何重定向。

编辑:我刚刚检查过了,普通的带有链接的a可以正常工作但问题是像这样的链接:

<a title="Delivery And Technology" class="ms-cui-ctl-large" id="someId" role="button" onclick="return false;" href="javascript:;" unselectable="on" mscui:controltype="" jQuery182001210093900916337="93">

里面有html

<SPAN class=ms-cui-ctl-largeIconContainer unselectable="on"><SPAN class=" ms-cui-img-32by32 ms-cui-img-cont-float ms-cui-imageDisabled" unselectable="on"><IMG style="TOP: -96px; LEFT: -160px" alt="Delivery And Technology" src="/_layouts/1033/images/ps32x32.png" unselectable="on"></SPAN></SPAN><SPAN class=ms-cui-ctl-largelabel unselectable="on">Delivery And<BR>Technology</SPAN>

所以似乎当我点击这个java脚本识别它并重定向我,所以我想要实现的是检测它,并停止之前,它将重定向到其他页面。

这将防止动态添加的锚也导航:

$(document).on('click', 'a', function(e){
     e.preventDefault();
     e.stopImmediatePropagation();
     return false;
});

steveukx建议简写:

$(document).on('click', 'a', false);

我的最佳猜测是在DOM准备好之前运行了这段代码。尝试将其封装在DOM-ready回调中:

$(function () {
    $('a').click(function(event){
        return false;
    });
});

请注意,返回false相当于.preventDefault().stopImmediatePropagation()加在一起,因此只返回false就足够了。在你的情况下,使用.preventDefault()可能更合适,但没有其他的

如果元素在代码执行之前附加了一个处理程序,则不可能可靠地删除或阻止该处理程序的运行。

假设您有jQuery可用,并且在将元素添加到DOM并附加其处理程序后运行此函数,您可以将其替换为相同的元素:

jQuery('a').replaceWith(function(index, innerHTML) {
  return jQuery(this.cloneNode(false)).html(innerHTML);
});