背景:
如果点击submit按钮,使用post请求提交表单的话,
再刷新页面,会提示:
确认重新提交表单
您所查找的网页要使用已输入的信息。返回此页可能需要重复已进行的所有操作。是否要继续操作。
发现:
jQuery Mobile默认使用ajax方式提交表单。
可以设置$.mobile.ignoreContentEnabled = true;
并在容器上添加data-ajax="false"
来禁用ajax方式提交。
但是,奇怪的是,jQuery Mobile用post方式提交表单后,浏览器不会刷新不会提示“确认重新提交表单”。
原因:
分析jQuery Mobile的源代码,发现使用了以下方法来禁止提示。
window.history.replaceState( state, state.title || document.title, href );
window.history.replaceState
是html提供的新方法,用来设置浏览器历史状态。
相关的还有,window.history.pushState
。
总结:
可以使用window.history.replaceState(null,null,window.location.href);
来禁用“确认重新提交表单”。
另外,pushState
和replaceState
可以无刷新的将url改变为同域的其他url。
网友评论