3

概述

我已经使用 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 问题:

我尝试过的事情:

数据网址

我尝试添加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">

但这没有帮助。

数据-rel="外部"

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

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

但这也无济于事。

数据-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 在这里的回答暗示添加它会破坏后退按钮,但我没有看到)

4

1 回答 1

2

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

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

另一种选择是,就像你说的,将每一页分成自己的文件。

于 2013-04-17T23:49:58.640 回答