这可能是一个愚蠢的问题,但我正在使用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链接/查找的概念,但是......
答案 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时,它让我脱离了一些泡菜。
祝你好运!汤姆