jQuery Mobile - 相对链接 - 基本标签错误

发布于 2024-12-11 13:48:31 字数 516 浏览 1 评论 0原文

在我的应用程序中,我使用基本标签 ,链接使用相对路径,如下所示: 一些链接

第一个页面加载起来非常顺利,但下一个请求尝试加载错误的 URL,经 firebug 测试。

示例:

Base: http://localhost/app/

  • 链接 1:新闻
  • 链接 2:关于

第一个请求,在链接 1 上,获取正确的 url,http://localhost/应用程序/新闻

但在下一个请求中,如果我单击链接 2,jquery mobile 会尝试加载以下网址: http://localhost/app/news/about

如何处理此问题?

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

谢谢。

On my application i use the base tag <base href="http://localhost/app/" />, and the links uses relative path, like these: <a href="news/page-1">some link</a>.

The first page load like a charm, but the next requests tries to load wrong URLs, tested by firebug.

Example:

Base: http://localhost/app/

  • link 1: news
  • link 2: about

on the first request, on link 1, obtain the correct url, http://localhost/app/news.

but on the next request, if i click on the link 2, jquery mobile tries to load the following url: http://localhost/app/news/about

how to deal with this problem?

use absolute urls is not an option.

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

还在原地等你 2024-12-18 13:48:32

它看起来像一个错误。

这可能是一个解决办法。

Github - 修复问题 613 - Jquery Mobile 忽略原始“base”
标签

It looks like a bug.

And here may be a fix for it.

Github - Fix for issue 613 - Jquery Mobile ignores original 'base'
tag

忱杏 2024-12-18 13:48:32

我设法使用 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>

它基本上执行以下操作:

  • 测试是否有基本标签,在这种情况下:
  • 选择每个具有属性“href”的“a”标签'
  • 过滤掉 href 是绝对 URL 的标签(以 'scheme:' 或 '/' 开头)
  • 将基本标签添加到 href 之前,使其成为绝对 URL

这对我来说效果很好。

请注意,它仅适用于以正斜杠结尾的基本 href(例如 'http://localhost/app/')。否则需要对基本变量进行额外的修剪。

我仍在尝试找出如何对图像来源执行相同的操作。尝试相同的技术失败了,因为在我使用 jQuery 修复它们之前,imgsrc URL 似乎被错误地转换为绝对 URL。如果有人发现窍门,请告诉我。同时,我将使用图像的绝对 URL...

I managed to fix the relative links using jQuery itself, putting this script at the bottom of every page:

<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>

It basically does the following:

  • Test if there is a base tag, in which case:
  • Select every 'a' tag having an attribute 'href'
  • Filter out tags whose href is an absolute URL (starting with a 'scheme:' or '/')
  • Prepend the base tag to the href, making it absolute

It worked out pretty well for me.

Note that it only works with base hrefs ending with a forward slash (such as 'http://localhost/app/'). Otherwise extra trimming will need to be performed on the base variable.

I'm still trying to figure out how to do the same with images' sources. Trying the same technique fails, as it seems the img's src URLs get wrongly converted to absolute before I can fix them using jQuery. If anyones finds a trick, let me know. Meanwhile, I'll be using absolute URLs for images...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文