Базовый тег возиться со ссылками на закладки - PullRequest
2 голосов
/ 02 января 2009

У меня есть сайт Joomla, который использует mod_rewrite для создания красивых URL.

http://www.example.com/resources/newsletter

Однако это создало проблему. Включая изображения, подобные этому: src="images/pic.jpg", он будет искать файл по адресу:

http://www.example.com/resources/newsletter/images/pic.jpg

... которого явно не существует. Чтобы обойти это, я включил тег <base> в свой раздел head:

<base href="http://www.example.com/" />

... который работал нормально, пока я не попытался сделать ссылку на точку привязки (закладку) на той же странице:

<!-- on http://www.example.com/resources/newsletter -->
<a href="#footer">go to the footer</a>

<!-- clicking that link takes you to http://www.example.com/#footer -->

Изменение моих ссылок на <a href="resources/newsletter/#footer"> нецелесообразно, поскольку при редактировании я не обязательно буду знать URL-адрес страницы. Есть ли способ заставить некоторые ссылки игнорировать директиву <base>?

Хотя я бы действительно предпочел простое решение HTML, я уже использую jQuery на этом сайте, так что это может быть вариант, если я застрял.

Ответы [ 2 ]

2 голосов
/ 02 января 2009

Можно ли изменить атрибут src на что-то вроде /images/pic.jpg? Это достигнет эффекта, который вы ищете.

Если это невозможно, этот (непроверенный) код jQuery должен работать для вас:

$('a[@href^="#"]').click(function() { 
  var hash = this.hash, el = $(hash), offset;
  if(!el.size()) {
    el = $("[@name=" + hash.slice(1) + "]");
  }

  offset = el.offset();
  window.scroll(offset.left, offset.top);
}); 
0 голосов
/ 07 июня 2016

Старый вопрос, новый ответ .. Попробуйте это:

$('a[href^="#"]').on('click', function (event) { 
    event.preventDefault();
    window.location.hash = $(this).attr('href');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...