0
$.getJSON("https://api.github.com/repos/theinfection/screencalculator.kdapp/contents/resources/version", function(data) {
    var currentVersion = decode64(data.content);

    $.get('./resources/version', function(dataVersion){
        var myVersion = dataVersion;

        if (currentVersion > myVersion) {
            $('.update').show();
        }
    });
});

コードの説明

まず、自分の GitHub リポジトリにある "version" というファイルの内容を取得します (ファイルには "1.4.3" と書かれています)。あとはGitHubがbase64でファイルの中身をエンコードしているので、別のJSファイルでデコードします。これにより、「currentVersion」変数が 1.4.3 に設定されます。

次に、サーバー上にある「バージョン」ファイル (1.4.2 が記述されている) を呼び出します。これにより、「myVersion」変数が 1.4.2 に設定されます。

そこから、両者を比較します。currentVersion が myVerison よりも大きい場合、更新 DIV が表示されます (デフォルトでは、CSS で「display:none;」に設定されています)。

問題

2 つの変数が等しい場合でも、DIV は表示されます。

質問

そうならないようにするにはどうしたらいいでしょうか?目的を達成するために、else ステートメントと else if ステートメントをどのように使用すればよいですか?

前もって感謝します!

4

3 に答える 3

0

私は DSlagle の投稿を読み、jsfiddle に変更があったいくつかのコメントを確認した後、ここでいくつかの更新を行いました。

http://jsfiddle.net/zshift/BCGSb/

    var currentVersion = decode64(data.content);
    alert('Current version: ' + currentVersion);
    //$.get('http://kasimahmic.koding.com/works/PPI/resources/version', function(dataVersion){
    var myVersion = '1.4.2';
    alert('Local version: ' + myVersion);

    if (currentVersion > myVersion) {
        alert('update available');
        $('.update').show();
    }
    else
        alert('no update available');

比較はサーバーからのデータで正常に機能するはずですが、それはローカル リソース ファイルが何を返すかによって異なります。アクセス制御権のためにデータに対して直接デバッグすることはできないため、呼び出しをモックアウトし、両方の値に 1.4.3 を使用すると、DIV が表示されなくなりました。「myVersion」を 1.4.2 に変更すると表示されるようになりました。また、いくつかのアラートを追加して、デバッグの値とフローを少し簡単に確認できるようにしました。

jsfiddle を使用したデバッグに関する別の注意事項。Chrome を使用すると、jsfiddle で実行中のコードを簡単にデバッグできます。開発者ツールを開き、[ソース] タブに移動して、fiddle.jshell.net を開きます。フィドルがhttp://jsfiddle.net/ {id} にある場合は、ソースは {id}/show というフォルダーにある必要があります。jsfiddle の右下のフレームです。ページを調べて iframe のリンクをクリックすることもできます。これにより、同じソース ウィンドウに移動します。ここから、ブレークポイントをアタッチし、ライブ データでデバッグできます。前にこれを取り上げなかった理由は、ページが読み込まれるとすぐにコードが実行されるため、ページが読み込まれた後に別の関数を呼び出さないとライブで見ることができないからです。しかし、それは将来の参照に役立つかもしれないと思いました;)

クロムでのjsfiddleのデバッグ

于 2013-05-31T03:40:14.017 に答える