Модифицированные внешние URL-адреса Twitter не работают
Twitter bootstrap modal не загружает внешние URL внутри модального.
Пример кода: jsFiddle
<a data-toggle="modal" class="btn" href="#" onclick="location.href='http://stackoverflow.com'; return false;" data-target="#myModal">click me</a>
<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
</div>
</div>
Ответы
Ответ 1
Это не работает, потому что вы нарушаете те же ограничения политики происхождения, которые мешают вам отправлять запросы AJAX с перекрестными доменами, которые здесь используются в бутстрапе. Таким образом, одна возможность заключается в загрузке внешнего содержимого в <iframe>
:
$('a.btn').on('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
$('.modal-body').html('<iframe width="100%" height="100%" frameborder="0" scrolling="no" allowtransparency="true" src="' + url + '"></iframe>');
});
Следует помнить, что некоторые сайты (такие как google, stackoverflow, facebook,...) не могут быть загружены в iframe. Они устанавливают HTTP-заголовок X-Frame-Options
ответа на SAMEORIGIN
, а также проверяют, загружены ли они внутри iframe
.
Вы можете увидеть это в действии в этой скрипте: http://jsfiddle.net/f2Fcd/
Ответ 2
Попробуйте следующее:
<script type="text/javascript" charset="utf-8">
$(function() {
$('*[data-modal]').click(function(e) {
e.preventDefault();
var href = $(e.target).attr('href');
if (href.indexOf('#') == 0) {
$(href).modal('show');
} else {
$.get(href, function(data) {
$('<div class="modal">' + data + '</div>').modal('show').appendTo('body');
});
}
});
});
</script>
Ответ 3
Этот фрагмент помогает в получении модального контента через Ajax:
$.get(href, function(response) {
$("#myModal .modal-content").html(response);
});
Имейте в виду, что полученный HTML response
должен содержать элементы dom, обычно присутствующие внутри элемента "модальный контент":
<div class="modal-header">HEADER</div>
<div class="modal-body">BODY</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Do It</button>
</div>