用Jquery修复断开的链接

时间:2009-08-26 00:10:03

标签: jquery

这可能是一个愚蠢的问题,但我正在使用jquery.load()和Jquery UI的标签。 我在那里加载的页面有详细的链接,这些链接在它们内部是相对的,如

<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 / class等中搜索。

我知道我错过了jquery链接/查找的概念,但是......

5 个答案:

答案 0 :(得分:8)

也许答案是将<base href="http://myserver.com/rootdir/dir1">添加到正在加载到标签中的文档的<head>

我希望您可以使用JQuery或类似的东西在浏览器端执行此操作。但如果没有,它应该是对呈现页面的服务器端JSP(或其他)的一个小改动。

答案 1 :(得分:2)

类似的东西应该有所帮助。它使用正则表达式,您可以精确地满足您的需求。我没有对此进行测试,但正则表达式旨在检测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 :(得分:2)

让你的链接绝对:

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

而不是:

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

答案 3 :(得分:1)

我遇到了这个问题,我发现让事情发挥作用的唯一方法就是永远让链接变得绝对......希望别人有更好的方法。

答案 4 :(得分:0)

不确定这是否有用,但您是否考虑过动态javascript文件?

这样你可以使用PHP并获得$ _SERVER变量......

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

将上方放在名为“ dynamic-javascript.js.php ”的文件的顶部。继续,在你的下面添加你的jquery代码,当需要PATH的时候回显到PHP。

要运行/包含该文件,只需将其添加到HTML文档的顶部,就像通常使用.js文件一样。

在黑暗中拍摄我知道......但是在处理javascript文件中的URL和PATHS时,它让我脱离了一些泡菜。

祝你好运!

汤姆