2014-05-15 29 views
0

我有一个包含面包屑链接和一个启动AJAX调用的Javascript文件的HTML文件。是否可以在一个HTML文件中设置多个基本URL?

面包屑链接是相对于HTML页面。 AJAX调用与webapp上下文路径有关。

因此,举例来说,如果当前的HTML页面是http://host.com/context_path/companies/5/user/10/index.html(其中“5”和“10”是任意的ID,我不知道时间提前):

如果我设置<base href="http://host.com/context_path/">那么AJAX调用工作正常,但我没有解决相关的HTML页面的面包屑链接的方式。

有没有什么办法让我使用客户端相对链接来实现这个?还是我强迫解决服务器端的链接?

+0

不得不分离'base'元素是不可能的(因为我发现它们通常会产生比解决问题更多的问题,所以我认为即使是一个也不够糟糕)。任何你为什么不能简单地指定_correct_路径,无论是绝对的还是相对的? – CBroe

+0

@CBroe:我看不出我如何使用*客户端*分辨率来设置正确的路径。我已经更新了这个问题,请看看。 – Gili

+0

为什么不呢? _You_毕竟输出了这些相关链接,所以将'wrong/relative/path'改为'correct/relative/path'的问题在哪里?完全不清楚这可能是一个问题。 (除非你以前从未正确处理相对路径,因为你总是依赖于'base'元素......不应该这样做,恕我直言,正如我已经说过的那样)。 – CBroe

回答

0

回答我的问题:

虽然这是事实,<base>标签会影响所有相关链接,它看起来像location.href指向原始HTML页面[1] 。因此,您可以设置<base>标记以满足AJAX调用,并使用Javascript代码设置相对于location.href的面包屑链接。

[1]虽然我在HTML规范中找不到任何提及,但它似乎适用于Chrome 34.0.1847.137m。

0

不幸的是,似乎没有办法做到这一点。如MDN中指定的:

用法注意:如果指定了多个元素,则仅使用第一个href和第一个目标值;所有其他人都被忽略。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

貌似唯一的办法是使用JavaScript来你的AJAX的网址转换为完整的。 $.ajax可能有一种方法,它允许您在发出请求之前拦截AJAX请求并处理url。

Modifying a jQuery ajax request intercepted via ajaxSend()可能是一个很好的起点

相关问题