2013-04-23 45 views
0

我目前使用的HTML的当前位为jQuery Mobile的页面转换功能后过渡完成:的JavaScript - jQuery Mobile的执行

​​

这里的save()功能是什么,在当前页上保存canvas

似乎save()功能与页面转换一起异步运行,因此有时页面转换时没有设法完全保存我想要的信息。

有没有办法彻底完成一个功能jQuery Mobile的执行页面转换之前?

- 更新 -

这里有一个例子的jsfiddle所有与玩:

http://jsfiddle.net/nMR85/1291/

(注意在控制台中save triggerpagebeforechange射击)

回答

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; 
    } 
}; 

现在它按预期工作。

+0

感谢您的回复,但它遗憾地不起作用。我也尝试过'onclick =“return false”'来试验,但即使'返回false'也会触发页面更改。 – dk123 2013-04-23 03:36:32

+0

@ dk123你能发表更多的代码吗? – Karol 2013-04-23 03:45:15

+0

我发布了一个简化的jsFiddle示例,希望它有帮助。 – dk123 2013-04-23 04:08:11