いくつかの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/