5

効果的なスクロールを作成するために、ページ間で値を渡すためにローカル ストレージを使用しています (ユーザーがリンクをクリックすると、ID に基づいてページの特定の部分にスクロールされます)。

以前は Cookie を使用していましたが、Android では動作しないようでした。ローカル ストレージがサポートされていると読んだので、それに切り替えました。ブラウザでは問題なく動作しますが、ネイティブアプリとしてパッケージ化するとすぐにすべての機能が失われますか? API は、それをサポートする必要があると述べていますが、何かアイデアはありますか?

これが私のコードです:

ベース URL:

var storage = window.localStorage;
$("a.scroll_link").click(function(event) {
    event.preventDefault();
    var value = $(this).attr("id");

        storage.setItem("key",value);

    console.log(value);

    window.location=$(this).attr("href");
});

受信 URL:

$(function () { 

var value = window.localStorage.getItem("key");

if (value != "" && value != "undefined" && value != null) {
    var storage = window.localStorage;
    storage.setItem("key",value);
    var scroll_type = "";

    if ($.browser.webkit) {
        scroll_type = "body";
    } else {
        scroll_type = "html";
    }

    $(scroll_type)
        .stop()
        .animate({
        //get top-position of target-element and set it as scroll target
        scrollTop: ($("#" + value).offset().top - 25)
        //scrolldelay: 1.5 seconds
    }, {
        duration: 1500,
        complete: function () {
            storage.removeItem("key");
        },
    });
  }
});

コードはブラウザで正常に動作しますが、ネイティブではありません。アイデアはありますか?

ありがとう、

4

3 に答える 3

2

$(function(){...} の代わりに document.addEventListener("deviceready", onDeviceReady, false) を使用してください

http://docs.phonegap.com/en/2.5.0/cordova_events_events.md.html#deviceready

于 2013-03-01T13:30:33.553 に答える
1

1.あなたが最初の問題を解決したことを知ってうれしい. gmh04 が言うように、init イベントを、アプリの実行開始時にトリガーされる「deviceready」に置き換える必要があると思います。

2. 受信 URL で window.localStorage.getItem("key") が null を返すということですか? あなたが説明しているように、私は正確に問題に遭遇しません。ただし、受信 URL のコードをベース URL の同じページに移動しようとする場合があります。私は何度も試してみましたが、localStorage が同じページで機能することを確信しています。

于 2013-03-02T00:58:45.777 に答える