Исправить неработающие ссылки с помощью Jquery - PullRequest
0 голосов
/ 26 августа 2009

Это, вероятно, глупый вопрос, но я использую вкладки jquery.load () и пользовательского интерфейса Jquery. на страницах, которые я загружаю, есть подробные ссылки, относительные внутри них, такие как

<a href="mypage.html">link</a>

Скажем, моя главная страница - myserver.com/rootdir/DefaultTabs.asp Поэтому, если загружаемая страница находится на myserver.com/rootdir/dir1/page1.html, то при загрузке ее на вкладку это неработающая ссылка, которая выглядит как myserver.com/rootdir/page1.html

Итак, как мне, например, заменить все ссылки на странице, чтобы показать правильный каталог, но НЕ заменить ссылку, если она уже является абсолютной. (например, внизу каждой страницы у меня есть myserver.com/rootdir/prefs/EditTab.asp, который я все еще хочу работать)

Спасибо большое. Я едва рискну в jquery и очень позади. Я боролся с этим несколько часов и пытался начать с поиска в div / классах и т. Д.

Я знаю, что мне не хватает концепции цепочки / поиска jquery, но ...

Ответы [ 5 ]

8 голосов
/ 26 августа 2009

Возможно, ответ заключается в добавлении <base href="http://myserver.com/rootdir/dir1"> к <head> документов, которые вы загружаете на вкладки.

Я ожидаю, что вы можете сделать это на стороне браузера, используя JQuery или что-то подобное. Но если нет, это должно быть небольшое изменение в JSP на стороне сервера (или что-то еще), которые отображают страницы.

2 голосов
/ 27 августа 2009

Сделайте ваши ссылки абсолютными:

<a href="/mypage.html">link</a>

Вместо:

<a href="mypage.html">link</a>
2 голосов
/ 27 августа 2009

Что-то похожее на это должно помочь. Он использует регулярные выражения, которые вы можете создать, чтобы точно соответствовать вашим потребностям. Я не проверял это, но регулярное выражение предназначено для обнаружения случаев, когда URL не начинается с индикатора абсолютного пути.

$('a', context).foreach(function() { 
    var link = $(this);
    var linkText = $(this).attr('href');
    if (null == linkText.match(/^([\\\/])|([^\\\/]*\:)/)) {
        // It's not an absolute url, so fix it.
        linkText = '\\root\\path\\here\\' + linkText;
        link.attr('href', linkText);
    }
});
1 голос
/ 26 августа 2009

Я столкнулся с этой проблемой, и единственный способ найти работу - всегда делать ссылки абсолютными ... надеюсь, у кого-то есть лучший способ.

0 голосов
/ 26 августа 2009

Не уверен, что это может быть чем-то полезным, но рассматривали ли вы файл динамического javascript?

Таким образом, вы можете использовать PHP и получить переменные $ _SERVER ...

<?php header('Content-Type: application/javascript'); ?>

Поместите приведенное выше в начало файла с именем " dynamic-javascript.js.php ". Идите дальше и добавьте свой код jquery под этим, повторяя в PHP, когда вам нужно для PATH.

Чтобы запустить / включить файл, просто добавьте его в начало HTML-документа, как это обычно делается с файлом .js.

Снято в темноте, я знаю ... но это вывело меня из-под огурцов при работе с URL и PATHS в файлах javascript.

Удачи!

Tom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...