Мне удалось исправить относительные ссылки с помощью самого jQuery, поместив этот скрипт внизу каждой страницы:
<script type="text/javascript"><!--
var base = $( 'base' ).attr( 'href' );
if( base ) {
// Fix a tags with relative href
$( 'a[href]' ).filter( function() {
return ! /^(\w+:|\/)/.test($(this).attr('href'));
}).each( function() {
$(this).attr( 'href' , base + $(this).attr( 'href' ) );
});
}
//--></script>
В основном он выполняет следующие действия:
- Проверьте, еслиесть базовый тег, в этом случае:
- Выберите каждый тег 'a', имеющий атрибут 'href'
- Отфильтруйте теги, чей href является абсолютным URL (начиная со схемы ':'или' / ')
- Подставьте базовый тег к href, сделав его абсолютным
Это сработало очень хорошо для меня.
Обратите внимание, что это толькоработает с базовыми ссылками, заканчивающимися косой чертой (например, 'http://localhost/app/'
).В противном случае потребуется дополнительная обрезка базовой переменной.
Я все еще пытаюсь понять, как сделать то же самое с источниками изображений.Попытка использовать ту же технику не удалась, так как кажется, что img
URL src
неправильно конвертируются в абсолютные, прежде чем я смогу исправить их с помощью jQuery.Если кто-нибудь найдет хитрость, дайте мне знать.А пока я буду использовать абсолютные URL для изображений ...