我正在使用 jQuery Mobile 构建一个移动网站,我的一位测试人员在使用 jQuery 内置的标准页面加载功能重新加载、深度链接或为我加载到 DOM 中的任何页面添加书签时指出了一个问题移动的。我一直在查看文档、论坛帖子、github 错误列表等以寻找解决方案,但我对自己可能做错的事情束手无策。我已经编译了一个非常基本的两页示例来演示我所看到的。
首先,我的示例站点根文件夹(即/index.html
)中有一个 index.html 页面,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Home Page</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.js"></script>
</head>
<body>
<!-- main page -->
<div data-role="page" data-theme="b" id="main">
<div data-role="header" data-theme="b">
<h1>Home Page</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role="listview" data-inset="true">
<li><a href="news/">News</a></li>
</ul>
</div><!-- /content -->
</div><!-- /main page -->
</body>
</html>
我在名为“news”(即/news/index.html
)的文件夹中有第二页,如下所示:
<div data-role="page" data-theme="b" data-add-back-btn="true" id="news">
<div data-role="header" data-theme="b">
<h1>News</h1>
</div><!-- /header -->
<div data-role="content">
TODO: page content goes here
</div><!-- /content -->
</div><!-- /#news page -->
所以,这很好用。“主页”加载正常。浏览器地址字段显示http://m.example.com/
。
我可以单击“新闻”链接将该页面加载到 DOM 中。浏览器地址字段现在显示http://m.example.com/news/
。这就是我的问题所在。如果单击浏览器重新加载按钮,/news/index.html
页面会重新加载,但完全缺少主主页上下文,因此没有 jQuery、css 或正确的 HTML 文档结构。鉴于 URL 及其文档内容,我希望是这种情况。但是,当从我的移动网站外部进行深度链接时,我需要指向子页面的链接才能工作。
如果您使用 链接到子http://m.example.com/#news/
页面,则可以正常加载子页面,并且浏览器地址字段会自动重写为http://m.example.com/news/
. 这样做的问题是人们需要知道他们需要在书签、推文、电子邮件等页面 URL 时手动编辑 URL。
有没有办法自动将浏览器踢回主页,然后触发加载子页面,对用户透明,以便正确重新创建 DOM?我错过了什么?