0

Android 4.0.3 + JQM+Phonegapを問題なく使用していました。昨日Android4.1でテストしたところ、動的に生成されたListViewで結果が重複することがありました。たとえば、次のコードを使用して、今日の日付を表示するListViewを生成します。

<ul data-role="listview" data-inset="true" data-theme="c" 
data-divider-theme="d" id="todayvalue">             
</ul>


document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
var today = new Date();
var dayofmonth = today.getDate();
var dayofweek = today.getDay();
var year = today.getFullYear();
var month = today.getMonth();
var myDays=      ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var m_names = ["January", "February", "March", 
    "April", "May", "June", "July", "August", "September", 
    "October", "November", "December"];
$('#todayvalue').append('<li>Today is '+ myDays[dayofweek]+ ', '+year+'-'+m_names[month]+'-'+dayofmonth+'</li>');
$('#todayvalue').listview('refresh');


 }

以前は全く問題ありませんでした。しかし、今では2つの同一の行が生成されます。

誰のせいですか?

更新:プロジェクトをhttps://github.com/ysongfinance/520Tollにアップロードしました。

さらにデバッグした後、onDeviceReady()が2回呼び出されたが、そのうちの1つが奇妙に見えることがわかりました。

07-05 20:42:31.368:I / Web Console(825):######## in OndeviceReady at file:///android_asset/www/js/updatetoll.js:4 07-05 20:42 :31.488:I / Web Console(825):######## in OndeviceReady at null:4

「OndeviceReadyatnull」の2番目の呼び出しを見てください。その「null」はどういう意味ですか?

4

1 に答える 1

1

Cordova1.9とAndroid2.2であなたの例を試しましたが、deviceready2回起動していました。

次に、updatetoll.js付属のボディを頭に移動すると、1回だけ発砲します。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>520 Toll Rate</title>
        <link rel="stylesheet" href="css/jquery.mobile-1.0.1.min.css" /> 

        <script src="js/jquery-1.6.4.min.js"></script> 
        <script src="js/jquery.mobile-1.0.1.min.js"></script>

        <script type="text/javascript" charset="utf-8" src="js/cordova-1.9.0.js"></script>
        <script src="js/updatetoll.js"></script>        
    </head>
    <body>      
        <div data-role="header">                
                <img src="logo/ic520toll.png" width=50px height=50px style="margin-left: 40%;"">            
        </div>
        <div data-role="content">
        <ul data-role="listview" data-inset="true" data-theme="c" 
            data-divider-theme="d" id="todayvalue">             
        </ul>           

        </div>  

    </body>
</html>

この変更を確認して、デバイスで機能するかどうかを確認できますか。

編集

headリスナーをタグの外に置くと、jQueryMobileが問題を引き起こすようです。新しいバージョンのjQueryMobile(1.1.0)を試しましたが、影響は同じです。

jQuery Mobileを削除してコードをそのままにしておくと、1回だけ起動します。

于 2012-07-07T05:19:54.487 に答える