2011-10-24 37 views
2

在我的应用程序中,我使用基本标记<base href="http://localhost/app/" />,并且链接使用相对路径,如下所示:<a href="news/page-1">some link</a>jQuery Mobile - 相关链接 - 基本标记bug

第一页加载像一个魅力,但接下来的请求尝试加载错误的URL,由萤火虫测试。

实施例:

基地:http://localhost/app/

  • 链路1:新闻
  • 链路2:约

在第一次请求,在链路1上,获得正确的URL, http://localhost/app/news

,但在下一次请求时,如果我的链接2,点击jQuery Mobile的尝试加载以下网址:http://localhost/app/news/about

如何处理这个问题呢?

使用绝对URL不是一个选项。

谢谢。

回答

0

我设法解决使用jQuery本身相对链接,把这个脚本在每个页面的底部:

<script type="text/javascript"><!-- 
var base = $('base').attr('href'); 
if(base) { 
    // Fix a tags with relative href 
    $('a[href]').filter(function() { 
    return ! /^(\w+:|\/)/.test($(this).attr('href')); 
    }).each(function() { 
    $(this).attr('href' , base + $(this).attr('href')); 
    }); 
} 
//--></script> 

它基本上做到以下几点:

  • 测试如果有一个基本标记,在这种情况下:
  • 选择每“A”具有属性标记“HREF”
  • 筛选出的标签,其href是绝对URL(开始用一个“方案:”或“/” )
  • 前置基地标签的HREF,使其成为绝对

它的工作非常适合我。

请注意,它只适用于以正斜杠结尾的基础hrefs(例如'http://localhost/app/')。否则,需要在基本变量上执行额外的修剪。

我还在试图弄清楚如何对图像的来源做同样的事情。尝试相同的技术失败,因为它看起来imgsrc网址被错误地转换为绝对的,然后我才能使用jQuery修复它们。如果任何人发现一个诡计,让我知道。同时,我将使用图片的绝对网址...