2

いくつかのJavaScriptの問題について、少し助けや方向性を得たいと思っています。クライアント サイトは CMS を通じて維持されます。追加される可能性のある URL を確認し、外部の場合は speedBump を起動する必要があります。いくつかの例外 (ホワイトリスト) が必要です。

Twitter ブートストラップ モーダルを使用していますが、現在のコードでは意図しない結果がいくつかあります。

たとえば、モーダルの [続行] ボタンは、確認時に URL を渡す代わりにダイアログを閉じます。URL が http として宣言されている場合、モーダルは閉じます。www として宣言されている場合、URL をドメイン (wierd) に追加します。また、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 に答える