2009-08-26 3 views
0

Это, наверное, глупый вопрос, но я использую jquery.load() и вкладку Jquery UI .. В страницы, которые я загружаю там есть подробные ссылки, которые являются относительными внутри них, какFix Broken Links с 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 и очень позади. Я боролся с этим несколько часов и пытаются StartsWith, поиск в DIVS/классы и т.д.

Я знаю, что отсутствует понятие Jquery цепным/вывода, но ...

ответ

1

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

+0

не единственный способ хоть –

0

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

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

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

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

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

Выстрел в темноте, который я знаю ... но он избавил меня от некоторых соленья при работе с URL и PATHS в файлах javascript.

Удачи вам!

Том

+0

Я уже делаю это, и я ожидаю, чтобы использовать эту функцию, чтобы обрабатывать проблема dir1 vs dir2. ie tab1 находится в каталоге dir1, tab2 находится в каталоге dir2. Tabs.asp - это «внешняя страница» в rootdir. Поэтому все относительные ссылки типа «file1.asp» пытаются загрузить в rootdir вместо rootdir/dir1 или rootdir/dir2 thansk для ваших ответов. – 2009-08-26 14:27:34

8

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

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

+0

Я был в восторге от этого, но это не сработало. (Он работает, если страница выполняется автономно, но если страница загружается с помощью jquery внутри div другой страницы, то она не работает. (Например, rootdir/tabs.asp загружает rootdir/dir1/tab1.asp, у которого есть ссылка на detailpage1.asp in dir1) – 2009-08-26 14:25:16

+0

должен быть в самом внешнем для DOM, поскольку браузер видит его. Я должен указать, что я не использую JQuery. Но элемент в является стандартным способом HTML для перемещать относительные URL-адреса href в документе. –

1

Нечто похожее на это должно помочь. Он использует регулярные выражения, которые вы можете создать, чтобы точно удовлетворить ваши потребности. Я не тестировал это, но регулярное выражение предназначено для обнаружения случаев, когда 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); 
    } 
}); 
2

сделать ваши ссылки абсолют:

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

вместо:

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