JqueryMobile - 刷新ajax加载的页面

时间:2012-06-25 12:06:14

标签: jquery ajax jquery-mobile

我使用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按钮正常工作?就像我把所有内容放在一页(然后它工作正常)

是否可以仅更改页面的内容部分,以便我不会一直复制粘贴页眉和页脚?

提前致谢

1 个答案:

答案 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处理程序中检查状态,如果页面需要状态,并将用户退回到索引页面。