2014-12-19 98 views
-1

此代碼只是允許在屏幕上拖動正方形。我用Adobe build構建它。我無法弄清楚爲什麼它不適用於移動平臺(android和ios)。在網頁上正常工作。手機拖動不能在移動平臺上工作

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery UI Draggable - Default functionality</title> 
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css"> 
<script type="text/javascript" src="phonegap.js"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<script> 
#draggable { 
    height: 150px; 
    padding: 0.5em; 
    width: 150px; 
    border: 1px solid black; 
    background-color: #ddd; 
} 
</script> 
<link rel="stylesheet" href="css/style.css"> 
<script> 
$(document).ready(function() { 
    // are we running in native app or in a browser? 
    window.isphone = false; 
    if(document.URL.indexOf("http://") === -1 
     && document.URL.indexOf("https://") === -1) { 
     window.isphone = true; 
    } 

    if(window.isphone) { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } else { 
     onDeviceReady(); 
    } 
}); 

function onDeviceReady() { 
    // phonegap ready 
    init(); 
    $("#draggable").draggable(); 
    $("#msg").prepend("starting<br/>"); 
} 

function init() { 
    document.addEventListener("touchstart", touchHandler, true); 
    document.addEventListener("touchmove", touchHandler, true); 
    document.addEventListener("touchend", touchHandler, true); 
    document.addEventListener("touchcancel", touchHandler, true); 
} 
function touchHandler(event) { 
    var touches = event.changedTouches, 
    first = touches[0], 
    type = ""; 
    switch(event.type) 
    { 
     case "touchstart": type = "mousedown"; 
     $("#msg").prepend("touchstart<br/>"); 
     break; 
     case "touchmove": type="mousemove"; break;   
     case "touchend": type="mouseup"; break; 
     default: return; 
    } 
    var simulatedEvent = document.createEvent("MouseEvent"); 
    simulatedEvent.initMouseEvent(type, true, true, window, 1, 
         first.screenX, first.screenY, 
         first.clientX, first.clientY, false, 
         false, false, false, 0/*left*/, null); 
    first.target.dispatchEvent(simulatedEvent); 
    event.preventDefault(); 
} 
</script> 
</head> 
<body> 
<div id="draggable" class="ui-widget-content"> 
    <p>Drag me around</p> 
</div> 
<div id="msg"> 
</div> 
</body> 
</html> 

該代碼是基於一個基本jQuery UI的例子,我在從各種其他示例的DeviceReady和TouchHandler代碼拉動。 我做的似乎沒有工作。我錯過了什麼嗎?

+0

當你說「在網頁上正常工作」時,你的意思是在手機上呢? – jcesarmobile 2014-12-19 09:49:16

+0

它可以在手機或觸摸屏筆記本電腦上的瀏覽器中使用。 – eyn 2014-12-19 10:29:49

+0

我能夠在telerik平臺上構建一個可運行的應用程序。仍然無法獲得Adobe平臺來構建工作應用程序。 – eyn 2014-12-20 08:12:30

回答

1

我發現你的問題,它在URL來

當你把//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css的CDN的,PhoneGap的將其轉換爲file://code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css

因此改變你的網址包含http:

<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css"> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 

甚至更​​好,下載這些文件並將它們放到您的www文件夾中,這樣應用程序就不需要下載它們,應該加載速度更快,並且可以脫機工作。

+0

嗯,我把外部文件拖入項目目錄。沒有運氣。仍然建立一個剛剛坐在那裏並且沒有互動的應用程序。但是,我在telerik平臺上構建了相同的應用程序,它的效果非常好!所以,我仍然試圖弄清楚如何在Adobe上構建它。如果我能在Adobe上運行,那麼Telerik的成本只有1/5。 – eyn 2014-12-20 08:10:37

+0

你所說的真的很奇怪,我在本地構建了一個示例應用程序並開始工作 – jcesarmobile 2014-12-20 09:35:54