DNN Open'离开网站'外部链接上的模态单击

时间:2017-03-02 17:45:51

标签: javascript jquery dotnetnuke dotnetnuke-8

新手在这里。在网站上尝试了几个不同的例子而没有任何运气。我的情况是,我们在整个DNN站点(Evoq 8.5)上都有以下格式的链接。

<a href="www.site.com" class="external-link">

我正在尝试打开一个模式,表示每次单击与external-link类的链接时,您将离开我们的站点。我也试图在DNN皮肤文件中完成此操作,因此它适用于所有页面。这就是我现在所拥有的。

模态:

<div id="modalExternalLink" class="modal fade">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
            <span class="modal-title">Thank you for visiting our site.</span>
        </div>
        <div class="modal-body">
          <p> You are now leaving our website.</p>
            <div class="button-container">
                <button type="button" id="btnContinue" class="btn-continue" style="margin-right:10px;">Continue</button>
                <button type="button" class="modal-button" data-dismiss="modal">Cancel</button>
            </div>
        </div>
    </div>
</div>

尝试显示模态并将链接的href传递给continue按钮:

$('.external-link').click(function(e) {{
    e.preventDefault();
    var link = (e.relatedTarget).attr('href');
    $("#btnContinue").attr('href', link);
    $("#modalExternalLink").modal('show');
});

这在我们的环境中不起作用。它直接指向链接的href URL。我确信还有其他方法可以做到这一点,但我们网站上有数百个链接,我们必须更改外部链接类,并且必须为具有不同链接的许多链接打开此模式网址。

2 个答案:

答案 0 :(得分:0)

你的第一行中有一个额外的{。这会导致错误,jQuery停止执行,永远不会达到e.preventDefault(),因此链接将被打开。因此,您没有看到脚本有错误。

其次,我将代码包装在$(document).ready(function ()

$(document).ready(function () {
    $('.external-link').click(function (e) {
        e.preventDefault();

        //rest of the code
    });
});

答案 1 :(得分:0)

如果有人偶然发现它,最终弄明白这一点。模态很好,但我的javascript不正确(并且因为我累了而有一些愚蠢的错误)。这是最终正在运行的javascript:

$(document).ready(function(e){
$('.external-link').on('click', function (e) {
e.preventDefault();
console.log($(e.currentTarget).attr('href'));
document.getElementById( "btnContinue" ).setAttribute( "onClick", (       "javascript:window.location.href=\"" + $(e.currentTarget).attr('href') + "\"") );
$('#modalExternalLink').modal('show');
});
});

您显然可以删除控制台日志。主要问题是e.relatedTarget未定义,所以我在那里登录以监控它。从一点点读数来看,Bootstrap 2和它之间存在差异。 3。