【问题标题】:jQuery Mobile hash navigation doesn't work in multipage template when entering site from interior page从内部页面进入站点时,jQuery Mobile 哈希导航在多页模板中不起作用
【发布时间】:2012-12-29 18:35:49
【问题描述】:

概述

我已经使用 jQuery Mobile 建立了一个站点。我遇到的问题是,当我从内部页面(如博客页面)进入网站并单击标题中的导航按钮时,我可以返回主页,但没有基于 ajax/hash 的导航链接有效。在我的标题导航中,我将左侧导航按钮直接与 href 链接,使用 data-rel="back"。我不是试图使用按钮来模仿浏览器的后退按钮,而是用于绝对导航。我已经在 Chrome 和 Firefox 的桌面上以及在 Mobile Safari 中运行 iOS 5 的 iPhone 上对此进行了测试;所有浏览器的行为都是相同的。

编辑:(请注意以下具体问题以粗斜体。)

什么有效,什么无效

例如,如果您转到内部页面http://slawson.org/blog/,然后单击标题中的< Kim 按钮返回首页,那么您只能转到绝对链接(如博客),但没有基于散列的链接(“投资组合”和“关于”标题下的其他链接)有效......单击链接不会触发页面转换,而是链接只是闪烁并且什么都不做。

如果您从主页(http://slawson.org/)或主页的子页面之一(如http://slawson.org/#web)进入站点,则不会出现此问题。

  • index.html — 包含大多数使用基于哈希的导航的其他页面(这些不起作用),例如:

    • 网站
    • iOS 应用程序
    • 印刷出版物
    • 徽标和品牌
    • ...

  • blog/index.html 和 blog/.../*.html — 通过 JQM 的 ajax 加载器加载的常规页面(这些工作)。

问题

从内部页面进入网站时,JQM 和 ajax 导航是否存在问题,或者这可以通过重组或在某处添加一些 jQuery 来解决?我想避免将每个页面分成单独的 html 文件。

版本

我正在使用 jQuery 1.8.2 和 jQuery Mobile 1.2.0。


编辑:

我查看了 JQM 多页模板文档和这些相关的 StackOverflow 问题:

我尝试过的事情:

数据-url

我尝试将data-url 添加到 index.html 中的多页中,如下所示:

<div data-role="page" id="web" data-url="index.html#web" data-title="Kim Slawson | Web Sites" class="shorter-list-items">

但这并没有帮助。

data-rel="外部"

我尝试在主页链接中添加data-rel="external",例如博客页面导航按钮上的此链接:

<a href="/" data-rel="external" data-role="button" data-direction="reverse" data-icon="arrow-l">Kim</a>     

但这也无济于事。

data-ajax="假"

我尝试在主页链接中添加data-ajax="false",例如博客页面导航按钮上的此链接:

<a href="/" data-ajax="false" data-role="button" data-direction="reverse" data-icon="arrow-l">Kim</a>       

这可行(即,您可以转到主页,然后所有多页都可以使用)但是过渡不会触发转到主页。 有没有办法给这个链接添加一个转换,也许是给它一个类,然后使用一些 jQuery 绑定到那个类来触发转换? 或者有吗?更好的方法? (值得注意的是,在我将 data-ajax="false" 添加到主页的链接后,后退按钮可以正常工作。Clement Ho's answer here 暗示添加它会破坏后退按钮,但我没有看到)

【问题讨论】:

    标签: ajax jquery-mobile navigation


    【解决方案1】:

    问题是当您单击指向它们的链接时,页面上不存在基于哈希的页面。 (&lt;div data-rolw="page" id="#web"&gt;...&lt;/div&gt; 不存在)

    如果您设置了后端框架,则可以在发出非 ajax(初始)请求时返回基于哈希的页面以及请求的页面。那么无论先加载哪个页面,这些页面都会在 DOM 中。

    另一种选择是,如您所说,将每个页面分成自己的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 2011-12-06
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多