是否可以在Jquery移动HTML5页面中检测页面刷新?
我正在构建一个测验作为客户端项目的一部分 - 测验在一个html页面中浏览jquery移动div页面..例如,如果用户在index.html上#quizpage3并刷新我想检测刷新并将导航返回index.html。
这可能吗?
干杯 保罗
答案 0 :(得分:3)
这是我正在使用的解决方案。在撰写本文时,tt似乎工作得很好,所以它可能对某人有所帮助。但是,它只是一个快速解决方案,并且为了更好的功能,它最好是服务器端。
首先关闭;请注意,此代码放在JQM代码之前。 (来自JQM网站:因为mobileinit事件是立即触发的,所以你需要在加载jQuery Mobile之前绑定你的事件处理程序。“)。我们得到当前页面的哈希值,但是我们不想刷新一些像主页这样的页面。
<script type="text/javascript">
var needRedirect = false;
$(document).bind("mobileinit", function(){
var thisPage = location.hash;
if (thisPage != '' && thisPage != '#homepage' && thisPage != '#page1') {
needRedirect = true;
}
});
</script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
然后就在您自己的代码开头:
if (needRedirect) {
$.mobile.changePage("#homepage");
needRedirect = false;
}
答案 1 :(得分:1)
这是一个开始,每次导航到另一个页面时,您都应该获得刷新控制台日志:
JS
$("div:jqmData(role='page')").live('pagehide',function(){
console.log('page refreshed, redirect to home');
$.mobile.changePage( "#home", { transition: "slideup"} );
});
HTML
<div data-role="page" id="home">
<div data-role="content">
Hello Refresh
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Home</li>
<li><a href="#page2">Page 2</a></li>
</ul>
</div>
</div>
<div data-role="page" id="page2" data-theme="a">
<div data-role="content">
Hello Page 2
<ul data-role="listview" data-inset="true" data-theme="a" data-dividertheme="a">
<li data-role="list-divider">Page 2</li>
<li><a href="#home">Home</a></li>
</ul>
</div>
</div>
也许其他事件会更好:
答案 2 :(得分:1)
我的答案类似于Patch,但我所做的只是在$(document).ready行之前将以下内容添加到我本地引用的js文件的顶部。您也可以将它添加到我认为的标题中的任何位置的HTML脚本标记中。
if (location.hash != "" && location.hash != "pageHome") {
var url = location.href;
url = url.replace(location.hash,"");
location.replace(url);
}
答案 3 :(得分:0)
您可以使用$(function() {});
方法(仅在页面加载时运行)获取网址,如果包含#,则重定向到主页。
编辑:或使用window.onload = function ...
作为纯JS替代方案。
答案 4 :(得分:0)
我有点迟了但是我按照Patch的想法来创建一个非常简单的解决方案。 在$(document).ready()
之前将其放在脚本标记或JS文件中checkPage();
function checkPage() {
var _hash = location.hash;
if (_hash != '' && _hash != "#home") {
var _url = location.href.replace(_hash, "");
window.location.href = _url;
}
}
答案 5 :(得分:0)
我认为,这更简单
$(document).on("pagebeforeshow", function() {
window.location = "page";
});