1

jQueryとjQueryMobileを使用するPhonegapアプリがあります。

一部のページでは、関数をtapイベントにバインドしましたが、ページが読み込まれると関数がトリガーされます。少しデバッグした後(を使用してarguments.callee.caller.caller.toString())、なんらかの奇妙な理由で、ページが読み込まれたときにそのボタンでクリックイベントがトリガーされていることを発見しました。

フッターのクラスを変更すると、問題はなくなり(スタイルも)、CSSファイルのクラス参照を新しいフッタークラスに一致するように変更すると、問題が再発しました。これは非常に奇妙です、多分それは私のCSSに何かを持っています。

"footer_body"私のプロジェクトには他に言及はありません。

関数呼び出しをHTML(のようなもの<span onClick="javascript:obj.leftMethod()">)に直接設定した場合、同じ動作をします。

確かに、これはPhonegap / Androidの問題です。これは、PCブラウザーでは発生しないためです(モバイルでのみ機能する多くのコードにコメントする必要があることを除けば)。

コードは次のとおりです。

HTML:

<div class="footer_body">
   <span class="left"><span>Text 1</span></span>
   <span class="right"><span>Text 2</span></span>
</div>

JS / jQuery:

function PageClass() {
...
    // called when the page is loaded
    this.init = function() {
        $(".footer_body", "#page_2").find(".left").unbind("tap").bind("tap", function() {
            that.leftMethod();
        });

        $(".footer_body", "#page_2").find(".right").unbind("tap").bind("tap", function() {
            that.rightMethod();
        });
        // that is a reference to "this" of the class
    }
}
4

1 に答える 1

0

解決されようとしている質問。本当の問題は、すべてのタッチイベントが次のページに運ばれていることです。以前は気づかなかったのですが、それは自動クリックのようなもののようでしたが、現在のページタッチイベントをトリガーした前の画面タッチイベントでした。

確かにそれはAndroidまたはPhonegapのバグです-誰かがこの問題から私が持っていたのと同じ認識を持っている場合に備えて、ここでそれについての詳細をご覧ください。

私はまだ具体的な解決策を必要としていますが、これを調査するのにうんざりしているので、リスナー機能をアクティブにするためにこの設定を少し遅らせて一時的に解決しました。

于 2012-06-19T19:12:54.870 に答える