我目前正在使用当前的html用于jQuery Mobile页面转换:
<a href="#page2" data-role="button" data-transition="flip" onclick="save()">page2</a>
这里的save()
功能可以将canvas
保存在当前页面上。
然而,似乎save()
函数与页面转换一起异步运行,因此有时页面转换没有设法完全保存我想要的信息。
有没有办法在jQuery Mobile执行页面转换之前完全完成一个函数?
- 的更新 -
这是一个jsFiddle示例供所有人玩:
http://jsfiddle.net/nMR85/1291/
(注意pagebeforechange
在控制台中的save trigger
之前触发
答案 0 :(得分:1)
尝试使用此解决方案:
var transition = false;
function save() {
if(!transition) {
var callback = function() {
transition = true;
$("a").click();
};
// your aynchronous code which will trigger callback after it finishes executing
return false;
}
else {
transition = false;
}
}
首次执行此函数不会触发转换(return false
阻止执行附加的每个下一个事件处理程序)。第二次执行会,但不会触发发送。当然,将transition
变量放入全局上下文并不是一个好习惯,但它只是一个想法,你可以如何应对这个问题。
另外我认为在onclick(用HTML)中你应该有return save()
。
根据提供的FIDDLE进行编辑:
玩小提琴我稍微改变了a
元素:
<a id="goto_trigger" href="#p2" data-role="button" onclick="return save()">Go To Page 2 with return</a>
此外,脚本应如下所示:
$(document).bind('pagebeforechange', function(e, data) {
console.log("pagebeforechange");
});
var transition = false;
function save() {
if(!transition) {
setTimeout(function(){
alert("save trigger");
transition = true;
$("#goto_trigger").click();
},3000);
return false;
}
};
现在它按预期工作。