使用javascript将Speedbump添加到某些页面链接中,确认不';t重定向

使用javascript将Speedbump添加到某些页面链接中,确认不';t重定向,javascript,jquery,asp.net,redirect,Javascript,Jquery,Asp.net,Redirect,我正在vs2012中开发一个站点,使用ASP和VB后端、CSS和JavaScript。长话短说,如果一个链接让用户离开我们的网站,它需要有一个免责声明Speedbump,说我们不负责任等等。我用下面的代码做这个 $(document).ready(function () { var anchors = $("a").get(); for (var i = 0; i < anchors.length; i++) { var anchor_element = a

我正在vs2012中开发一个站点,使用ASP和VB后端、CSS和JavaScript。长话短说,如果一个链接让用户离开我们的网站,它需要有一个免责声明Speedbump,说我们不负责任等等。我用下面的代码做这个

$(document).ready(function () {
    var anchors = $("a").get();
    for (var i = 0; i < anchors.length; i++) {
        var anchor_element = anchors[i];
        var url = anchor_element.attributes[0].nodeValue;
        if ((url.indexOf('.com') != -1) || (url.indexOf('ForwardProcessing') != -1)) {
            anchor_element.onclick = function () {
                return window.confirm('The link you selected will take you to a third party website...\r\rClick <CANCEL> if you would like to stay.');
            }
        }
    }
});
$(文档).ready(函数(){
var archors=$(“a”).get();
对于(var i=0;i
因此,这可以准确地找到我正在寻找的链接,并且可以很好地附加减速带(仅在IE中,但我将在一分钟内对此进行更多解释)。但在运行时,当您单击ok时,我会看到鼠标指针变成带有感叹号的手,页面不会改变。显然,JavaScript中出现了一些错误,但我在代码中找不到任何好的地方来设置断点以查看可能发生的错误

这导致了第二个问题。。。这似乎只适用于IE。我尝试使用firefox/firebug查看js,但speedbump从未出现,用户直接进入下一页。。。这告诉我肯定有问题,但信息更少。有JavaScript专家看到什么了吗?我对js还是个新手,在谷歌搜索了一天之后,我什么也没发现


更新:问题似乎与弹出窗口相关?在html中,我使用target=\u blank在新选项卡中打开链接。。。去掉这个可以解决问题,但我想使用新标签。。。这是否有冲突?

尝试将以下
onclick
行更改为:

anchor_element.onclick = "return window.confirm('The link you selected will take you to a third party website...\r\rClick <CANCEL> if you would like to stay.');";
anchor\u element.onclick=“返回窗口.确认('您选择的链接将带您到第三方网站…\r\r如果您想留下来,请单击“”);
当然,还要把支架固定好。我还没有测试它,但是我认为你可以比我设置测试场景更快。如果不起作用,请告诉我

编辑:刚刚测试了您的原始更改和我的更改,两者都很好,所以我的答案不是解决方案。。。你能公布你的错误吗?我没有得到一个,除非它重定向到www.google.com。我在谷歌页面上得到一个错误,但我的其他3个测试重定向页面工作正常

这是我的测试代码

<a href="http://www.google.com" target="_blank">Google</a><br />
<a href="http://www.microsoft.com" target="_blank">Microsoft</a><br />
<a href="http://www.apple.com">Apple</a><br />
<a href="http://www.stackoverflow.com">Stackoverflow</a><br />

<script type="text/javascript">
    $(document).ready(function () {

        var anchors = $("a").get();

        for (var i = 0; i < anchors.length; i++) {
            var anchor_element = anchors[i];
            var url = anchor_element.attributes[0].nodeValue;
            if ((url.indexOf('.com') != -1) || (url.indexOf('ForwardProcessing') != -1)) {
                anchor_element.onclick = "return window.confirm('The link you selected will take you to a third party website...\r\rClick <CANCEL> if you would like to stay.');";                    
            }
        }
    });




$(文档).ready(函数(){ var archors=$(“a”).get(); 对于(var i=0;i
页面中没有其他内容,它可以正常工作


编辑2:我在打开弹出窗口阻止程序的情况下使用IE11进行了测试,没有遇到任何问题。在新选项卡中打开的站点没有问题。弹出窗口拦截器被设置为“中等”。

代码最终有两个问题。 首先,我需要使用anchor_element.href->IE识别属性[0]作为href,但如果是firefox,这是一个CSS值。指定解决此问题的属性

它在IE中不起作用的原因是,IE中没有后续的链接帖子确认,这有点尴尬。我在IE中关闭了弹出窗口阻止程序。。。但不在我的谷歌工具栏中:/


但我来这里只是因为其他人确认这对他们有效。谢谢大家

你在Chrome、FireFox和IE11中为我所做的工作:如果我这样做,那么页面加载时会弹出所有的减速带,然后当我单击链接时不会出现这些减速带:/你确定你发布了准确的代码吗?我将发布我的测试代码供您查看。我直接复制并粘贴了它,我唯一做的编辑就是替换了speedbump中包含我们公司名称的措辞。@Jon肯定还有其他事情发生。。。把我的代码放在一个空白的HTML页面中,你就会看到它是有效的。(当然也要确保您有jquery引用)这个错误实际上似乎是一个弹出窗口阻止程序问题?如果我没有在实际链接中使用“target=\u blank”,我可以绕过它。。。这会影响javascript吗?