是否可以在单个HTML文件中设置多个基本URL?

时间:2014-05-15 01:47:50

标签: html ajax

我有一个HTML文件,其中包含面包屑链接和一个触发AJAX调用的Javascript文件。

面包屑链接与HTML页面相关。 AJAX调用与webapp context-path相关。

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

如果我设置<base href="http://host.com/context_path/">,那么AJAX调用工作正常,但我无法解析相对于HTML页面的痕迹链接。

我有什么方法可以使用客户端相关链接实现这一点吗?或者我是否被迫解析服务器端的链接?

2 个答案:

答案 0 :(得分: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()可能是一个很好的起点

答案 1 :(得分:0)

回答我自己的问题:

虽然<base>标记确实影响了所有相对链接,但看起来location.href指向原始HTML页面[1]。所以你可以做的是设置<base>标签以满足AJAX调用,并使用Javascript代码设置相对于location.href的痕迹链接。

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