2013-03-28 154 views
2

希望得到一些帮助或方向与几个JavaScript问题。客户端网站将通过CMS进行维护,我们需要检查可能添加的任何URL,如果它是外部的,则启动speedBump。我们确实需要有一些例外(白名单)。jQuery&twitter Bootstrap Modal

我们使用twitter bootstrap模态,并且存在一些当前代码无法预料的结果。

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

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/

回答

0

我不知道为什么会出现这种情况。但是,将重定向功能挂接到show事件似乎可以解决问题。

$('#speedbump').on('show', function() { 
    $('#url_link').click(function() { 
     document.location = $(this).attr('href'); 
    }); 
}); 
+0

感谢马蹄寺,这似乎解决了模态的问题继续按钮没有通过URL。不解决http和www行为之间的问题,但这是一个开始,我很感谢帮助! – Zendiko