2013-04-23 49 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