2012-11-21 111 views
1

我試圖讓拖放功能在Windows 7.5手機中工作。 最初我嘗試使用jQuery UI可拖拽,它可以在除Windows 7.5以外的所有瀏覽器中使用。 後來進一步探索,我發現在windows中沒有touchstart,touchend和touchmove事件。 所以我試圖讓它工作使用mousedown,mousemove事件令人震驚的是射擊。但他們不會以正確的順序開火。 (在mousedown之前移動鼠標)。 dragstart和dragend事件也不起作用。 我需要這個工作。你有什麼建議嗎 ?JavaScript拖放在Windows Phone 7.5

/*Eg1:does not work*/ 
$("#draggable").draggable(); 

/*Eg2:This event does not fire*/ 
$("#draggable").bind("touchstart touchmove touchend", function(){ 
alert("touch events supported");}) 

/*Eg3: In this case, mousemove fires before mousedown.*/ 
$("#draggable").bind("mousedown", function(){ 
alert("mousedown");}); 

$("#draggable").bind("mousemove", function(){ 
alert("mousemove");}); 
+1

你應該提供你正在做的事情的代碼樣本,而不僅僅是文本描述。通過提供代碼示例,人們將更有可能幫助您並找到答案 – HpTerm

回答

1

我只是有經驗的Windows Phone 8使用JavaScript它使用IE瀏覽器10(在WP7.5和WP7.8不是IE 9),但你可以給我的方法一試。

在WP8(IE10)微軟支持pointer事件MSPointerUpMSPointerMoveMSPointerDown代替touchstarttouchmovetouchend事件。嘗試使用這些來查看它們是否工作。

在我已創建的示例,然而,我確實甚至不需要使用這些專有的事件IE 10愉快地使用的標準鼠標事件(mouseupmousemovemousedown)和運作良好的程度。我對事件的順序沒有任何問題(就像你在問題中所說的那樣)。拖動時出現的主要問題是mousemove事件停止被觸發(由瀏覽器),而瀏覽器開始平移頁面,使我的拖動元素處於保持狀態(未觸發mousemovemouseupmouseup觸發)。使用event.preventDefault()也沒有幫助,因爲它沒有阻止頁面平移。爲了解決這個問題,我瀏覽了微軟關於他們觸摸事件的文檔,並且遇到了這個CSS代碼。

-ms-touch-action: none; 

我應用這個對我的元素是和我的問題得到解決。你可以閱讀所有關於上述專有CSS屬性here。小心不要將此屬性應用到頁面的整個body(我之前完成的),因爲它可以防止頁面平移和縮放的默認瀏覽器行爲。正如我所說的只適用於要素拖動,它的工作原理。

再次,這是我對WP8的體驗。我做了而不是知道它是否適用於以前版本的Windows Phone。