【发布时间】: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 问题:
- jQuery mobile page navigation behaviour
- Facing an issue in jquerymobile's multi page template stucture
- JQuery Mobile - link from external page (SinglePage-template) to an internal page (MultiPage-template)
我尝试过的事情:
数据-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