【问题标题】:working jQuery code won't run in phonegap工作 jQuery 代码不会在 phonegap 中运行
【发布时间】:2016-09-18 06:10:15
【问题描述】:

Js:

    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>

    <script type="text/javascript">
        document.addEventListener("deviceready",onDeviceReady,false);

        function onDeviceReady() {

            document.getElementById("btnSave").addEventListener("click",saveData,false);
            document.getElementById("btnShow").addEventListener("click",showData,false);
}

    function saveData(){
        var data  = window.localStorage.getItem("date");

        var dates = data ? JSON.parse(data) : [];

        dates.push( new Date() );

        window.localStorage.setItem("date", JSON.stringify(dates));

        alert("Your data is stored");
    }

    function showData() {
        var data = JSON.parse(window.localStorage.getItem("date"));
        console.log(data);
        $('#res').html(JSON.stringify(data));
        $(this).html('Update result');
    }

html:

    <button id="btnSave"> Save Data </button>

    <button id="btnShow"> Show Data </button>

代码在 jsfiddle 中工作(有人提供给我)jsfiddle,我已经对其进行了编辑以集成到 phonegap,但是当我在 phonegap(iOS 的 Xcode 模拟器)中运行它时,代码现在无法工作。

【问题讨论】:

  • won't work - 并没有给我们太多的信息 - 你有控制台错误你可以分享,任何关于什么不起作用的线索都会被粉碎
  • 没有控制台错误。当我单击保存数据时,本地存储中没有存储任何日期,也不会显示“您的数据已存储”警报。
  • 页面是http还是https?
  • 你能确认onDeviceReady中的代码被调用过吗?
  • 是的,应该调用 onDeviceReady 中的代码,因为我有其他代码可以毫无问题地调用。

标签: javascript jquery cordova local-storage phonegap-build


【解决方案1】:

当您的deviceReady 被触发时,这些元素可能不存在。所以从deviceReady 中删除这些行并编写如下:

$(document).on("click","#btnSave",function(){
    saveData();
});
$(document).on("click","#btnShow",function(){
    showData();
});

并使用以下jQueryjQueryMobile

  <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

【讨论】:

  • 谢谢。我从 deviceReady 中删除了线路并放入您的线路,但它仍然无法正常工作。这很令人沮丧,因为我知道代码在普通的 windows html 中工作,但由于某种原因拒绝在 phonegap 中工作
  • 显示整个html 页面
  • 我认为应该调用那些元素,因为如果我将我的 js 更改为: function saveData(){ var date= new Date(); window.localStorage.setItem("日期", JSON.stringify(date)); alert("您的数据已存储");所以不是保存多个值,而是覆盖当前日期,这对我有用,但这又不是我希望应用程序做的事情。
  • 我改了答案。检查一下
  • 在我更改了 jQuery 和 JQueryMobile 版本后,它给出了一个错误:TypeError: dates.push is not a function。 (在'dates.push(new Date())'中,'dates.push'是未定义的)
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 2011-11-01
  • 1970-01-01
  • 2019-10-17
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多