2013-03-28 48 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