2

希望在一些 javascript 问题上获得一些帮助或指导。客户端站点将通过 CMS 进行维护,我们需要检查任何可能添加的 URL,如果是外部的,则启动 speedBump。我们确实需要一些例外(白名单)。

我们正在使用 twitter 引导模式,当前代码有一些意想不到的结果。

例如,模式中的继续按钮关闭对话框,而不是在确认时传递 URL。如果 URL 被声明为 http,模式关闭,如果它被声明为 www,它将 URL 附加到域(奇怪)。还在寻找改进/扩展或添加应该被 speedBump 忽略的 URL 白名单的最佳方法。我确信有比我们现有的方法更好的方法。

jQuery(document).ready(function () {
// FIND EXTERNAL LINKS
$.expr[":"].external = function (a) {
    // DO NOT INCLUDE THE FOLLOWING MATCHES: EMAIL LINKS, TELEPHONE LINKS, HOSTNAME
    return !a.href.match(/^mailto\:/) && !a.href.match(/^tel\:/) && a.hostname != location.hostname
};
// ADD BOOTSTRAP DATA-TOGGLE ATTRIBUTE TO THE LINKS
$('a:external').attr('data-toggle', 'modal');
// ADD BOOTSTRAP DATA-TARGET ATTRIBUTE TO THE LINKS
$('a:external').attr('data-target', '#speedbump');
// ADD EXTERNAL LINK CLASS .ext_link FOR STYLING
$("a:external").addClass("ext_link");
// ADD THE LINK AND TITLE TO THE MODAL WINDOW
$(function () {
    $('a.ext_link').click(function () {
        var url = $(this).attr('href');
        var title = $(this).attr('title');
        $('#url_link').attr('href', url);
    });
});

});

jsfiddle 上的当前代码和模态示例,供不介意查看的任何人使用:http: //jsfiddle.net/zendiko/TYAeD/

4

1 回答 1

0

我不知道为什么会这样。但是,将重定向功能与事件挂钩show似乎可以解决问题。

$('#speedbump').on('show', function () {
    $('#url_link').click(function () {
        document.location = $(this).attr('href');
    });
});
于 2013-03-28T15:11:43.623 回答