簡體   English   中英

Javascript在瀏覽器中運行,而不是在使用cordova的phonegap應用中運行

[英]Javascript runs in browser, not in phonegap app with cordova

下面的代碼是一種需要將一些值保存到本地存儲中的表單,我已經使其可以在瀏覽器中工作,但是當我在xcode / cordova中加載此東西時,它不會觸發該函數。 我嘗試調試,因此有很多警報,我在DWCS6中嘗試了實時取景,但無濟於事,我似乎無法運行它。 您能找到錯誤嗎?

函數saveSpanning()有一個if循環,當它退出if-then-else循環時,它不會在xcode模擬器中繼續。 在瀏覽器中,它確實會繼續。

更新 :做什么:有一個滑塊,產生一個值,該值需要與其他兩個值(由JavaScript生成)一起保存在本地存儲中,即:日期和記錄計數。 因此共有三個值。

該腳本運行,使用jquery mobile,啟動此功能的按鈕起作用,我使用document.ready代替onBodyLoad ,它基本上起作用了,但是功能saveSpanning只是在phonegap / ios / xcode模擬器或設備中無法繼續使用。

function saveSpanning() {
    alert("saveSpanning gestart!");
    var inputSpanning = document.getElementById("valSliderSpanning").value;
    alert("input spanning = " + inputSpanning);

    //For Time
    var mes_time = document.getElementById("tijdSpanning").value;
    var mestimearr = mes_time.split(":");
    //For Date
    var mes_date = document.getElementById("datumSpanning").value;
    var mesdatearr = mes_date.split("-");
    var d = new Date();
    var curr_date = d.getDate();
    var curr_month = d.getMonth() + 1; //Months are zero based
    var curr_year = d.getFullYear();
    var curr_hours = d.getHours();
    var curr_min = d.getMinutes();
    var curr_sec = d.getSeconds();
    //newDate = curr_year + "/" + curr_month + "/" + curr_date + " " + curr_hours + ":" + curr_min + ":" + curr_sec
    // origienel opmaak datum newDate = mesdatearr[0] + "/" + mesdatearr[1] + "/" + mesdatearr[2] + " " + mestimearr[0] + ":" + mestimearr[1] + ":00";
    newDate = mesdatearr[0] + "/" + mesdatearr[1] + "/" + mesdatearr[2];

    alert("deze datum wordt opgelsage: " + newDate);

    //var itemId = newDate.getTime(); //creates a unique id with the milliseconds since January 1, 1970
    var itemId = "spanningKey";
    var values = new Array();
    values.push(newDate); //push each value into our values array
    values.push(inputSpanning); //push each value into our values array
    //alert(inputSpanning);

    var spanningCountVal = localStorage.getItem('spanning_count');

    //alert(spanningCountVal);
    if (spanningCountVal == null) {
        spanningCountVal = 1;

        alert("spanningCountVal was null, en wordt dus nu 1: " + spanningCountVal);

    }
    else {
        spanningCount = parseInt(spanningCountVal) + 1;
        alert("zit nu in de else loop: " + spanningCount);

    }

    alert("uit de ifthenelseloop, spanningCount = " + spanningCount);

    itemId = itemId + '-rec-' + spanningCount;
    alert("itemid: " + itemId);
    alert("spanningCountVal: " + spanningCount);


    localStorage.setItem("spanning_count", spanningCount); //store the item in the database
    localStorage.setItem(itemId, values.join("|")); //store the item in the database
    alert("Successfully Saved.");
}


$(document).ready(function() {

    $("#button").click(function() {
        alert("hallo functie");
    });

    $("p").text("The DOM is now loaded and can be manipulated.");



    $('#button2').click(function() {
        alert('Button has been clicked');
    });
    $('#knopje').click(function() {
        saveSpanning();
    });
});​

當所有DOM元素均已加載且可訪問時,將調用document.ready 在瀏覽器中,這通常是開始執行要求DOM准備就緒的代碼的好時機。

但是,在Phonegap / Cordova中,觸發document.ready事件后,需要執行許多步驟,包括連接到調試控制台。

相反,您需要等待deviceready事件知道何時完全加載phonegap / cordova並准備執行它們。 $(document).on('ready')您需要為deviceready添加事件偵聽器,這將觸發您的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM