使用javascript将speedbump添加到某些页面链接,确认不会重定向

时间:2014-07-08 14:28:51

标签: javascript jquery asp.net redirect

我正在使用ASP和VB后端,CSS和JavaScript在vs2012中开发一个网站。长话短说,如果一个链接将用户从我们的网站上移除,那么它需要有一个免责声明的速度提示,说我们不负责任等等。我使用以下代码执行此操作...

$(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.');
            }
        }
    }
});

因此,这可以准确地找到我正在寻找的链接,并且可以很好地附加减速带(仅限IE,但我会在一分钟内解释更多)。但是在运行时,当你点击确定时,我会将鼠标指针变成带有感叹号的手,页面不会改变。显然,JavaScript中存在一些错误,但我无法在代码中找到任何好的位置来设置断点以查看可能发生的错误。

导致第二个问题......这似乎只适用于IE。我尝试使用firefox / firebug来查看js,并且从未发生过speedbump,用户直接进入下一页...这告诉我肯定错误,但是更少的信息。那里的任何JavaScript专家都能看到什么?我仍然对js很新,在谷歌搜索了一天之后,没有找到任何东西......

更新:问题似乎与弹出相关?在html中,我使用target = _blank在新标签中打开链接...解决这个问题可以解决问题,但我想使用新标签...这是否存在冲突?< / p>

2 个答案:

答案 0 :(得分:0)

尝试将以下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.');";

当然要修好包围。我还没有对它进行过测试,但我认为你可以比我设置一个测试场景更快。如果它没有工作,请告诉我。

编辑:刚刚测试了您的原始更改和我的更改,两者都运行正常,所以我的答案不是解决方案...您能发布您的错误是什么吗?除非重定向到www.google.com,否则我不会得到一个。我在google页面上收到错误,但我的其他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.');";                    
            }
        }
    });

页面中没有其他任何内容可以使用。

编辑2:我使用带有弹出窗口阻止程序的IE11进行了测试,没有遇到任何问题。网站在新标签页中打开,没有任何问题。弹出窗口拦截器设置为“中等”。

答案 1 :(得分:0)

最后,代码有2个问题。 首先是我需要使用anchor_element.href - &gt; IE将属性[0]识别为href,但如果是firefox,则这是一个CSS值。指定WHICH属性解决了这个问题。

它没有在IE中工作的原因,没有跟进确认后的链接有点令人尴尬。我在IE中关闭了弹出窗口拦截器...但不是在我的谷歌工具栏中。 :/

但我只是来到这里,因为其他人确认它对他们有用。谢谢大家!