jQuery Mobile - Относительные ссылки - ошибка базового тега - PullRequest
2 голосов
/ 25 октября 2011

В моем приложении я использую базовый тег <base href="http://localhost/app/" />, а ссылки используют относительный путь, например: <a href="news/page-1">some link</a>.

Первая страница загружается как талисман, но следующие запросы пытаются загрузитьнеправильные URL, протестированные firebug.

Пример:

База: http://localhost/app/

  • ссылка 1: новости
  • ссылка 2: о

по первому запросу, по ссылке 1, получите правильный URL, http://localhost/app/news.

, но по следующему запросу, если я нажму на ссылку 2, jquery mobile попытаетсязагрузить следующий URL: http://localhost/app/news/about

как решить эту проблему?

использовать абсолютные URL-адреса не вариант.

спасибо.

Ответы [ 2 ]

0 голосов
/ 03 марта 2013

Мне удалось исправить относительные ссылки с помощью самого 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 для изображений ...

0 голосов
/ 25 октября 2011

Это похоже на ошибку.

И здесь может быть исправление для нее.

Github - Исправление для проблемы 613 - Jquery Mobile игнорирует оригиналбазовый тег

...