概述
我已经使用 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 移动页面导航行为
- 面临 jquerymobile 的多页模板结构中的问题
- JQuery Mobile - 从外部页面(SinglePage-template)链接到内部页面(MultiPage-template)
我尝试过的事情:
数据网址
我尝试添加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 在这里的回答暗示添加它会破坏后退按钮,但我没有看到)