我使用jquerymobile制作了两个页面。第一个包含指向第二个的链接。
<a href="index.php/main/uploadView/" data-transition="none" data-icon="plus">Some page</a>
当我点击链接时,我会加载新页面。但是,如果我按下F5按钮,我将获得没有任何js脚本和css文件的新页面。 第一页的结构是:
<html>
<head>
... js/css files ...
</head>
<body>
<div data-role="page" id="..">
...
</div>
</body>
</html>
第二个:
<div data-role="page" id="...">
...
</div>
那么如何才能使F5按钮正常工作?就像我把所有内容放在一页(然后它工作正常)
是否可以仅更改页面的内容部分,以便我不会一直复制粘贴页眉和页脚?
提前致谢
答案 0 :(得分:0)
这是旧的,但有很多网页浏览量,我没有在别处看到答案......
我认为根据所需的行为有两种解决方案。
首先是在第二页和每一页上都有相同的模板 - 标题,包括等。这确保了“深层链接”和刷新将无论浏览器对url哈希的支持如何都能正常工作(chrome要求这样,IE没有它就可以正常工作。)
当需要有状态时,这会失败。如果用户在第一页上登录或搜索某些内容,并在第二页上显示结果,则第二页的深层链接没有任何意义,并且不应该真正导航到。同上F5;你会在刷新时失去状态。
如果用户通过链接或刷新进入,则会导致解决方案2,重定向到第一个或“主页”页面。不要复制非索引页面的模板,只需更改标题中的位置:
<script>
location.href = "index.html";
</script>
在jQM中的正常ajax页面导航期间,标题中的脚本不会运行;这仅在直接导航到页面时运行。
这个落后的地方是直接导航到像mysite / index.html#/ pageTwo.html这样的散列网址。 jQM加载index.html,然后加载pageTwo.html而不处理标题脚本,但如果这是一个有状态页面,它将无法正确显示。
你可以完全关闭哈希:
$.mobile.changePage.defaults.changeHash = false;
或者在pageinit处理程序中检查状态,如果页面需要状态,并将用户退回到索引页面。