2012-05-03 10 views
14
私はPhoneGapのを使用しています

の作業とのonClickを検出しようとしていない、しかしAndroidは、以下のそれを完全に無視しているようだが、私がしようとしていますものですonClickのバリエーションにはjavascript、jQueryなどがありますが、これらのどれもうまくいかないようです。アンドロイド/ PhoneGapののonClick()

私はonChangeが動作することに気がつきましたが、ユーザーに変更を確認するプロンプトを使用する必要があるため、これはあまり役に立ちません。ただし、onchangeを使用すると、ドロップダウン内の項目が変更されます。

誰か助けてもらえますか?

+0

あなたの代わりにJavaScriptで取り付けてみたことがありますか?それはきれいで、おそらくより良いサポートを持っています。 selectにIDを追加し、 'document.getElementById( 'foo')。onclick = StartButtons;' – GillesC

答えて

0

"method();ではなく" method "にメソッドを呼び出そうとしましたか?だから、おそらくあなたの行を試すことができます:

<select name="func" onclick="StartButtons" data-native-menu="true"> 

あなたのメソッドが呼び出されることを願っています。

+0

私は以前これを試しましたが、残念ながらそれは他のアイデアでは動作しませんでしたか?ありがとう –

+3

'StartButtons'は関数へのポインタです。 'StartButtons()'はその関数を実行します。 – Omeriko

4

clickイベントリスナーをjavascriptでオブジェクトに追加します。

<select id="obj_id" name="func" data-native-menu="true"> 

をそして、()のaddEventListenerを呼び出します:最初のオブジェクトにIDを追加

document.getElementById("obj_id").addEventListener("click", StartButtons, false); 

PhoneGapのドキュメントは、 "deviceready" イベント内のすべてのあなたのjavascriptのコードを実行することrecomends。だからあなたのコードは次のようになります。

main.js:

function StartButtons() { ... } 

    function onDeviceReady() { 
     ... 
     document.getElementById("obj_id") 
      .addEventListener("click", StartButtons, false); 
     ... 
    } 

    function init() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

のindex.html:

... 
     <script type="text/javascript" charset="utf-8" src="main.js"></script> 
    </head> 
    <body onload="init();"> 
     ... 
     <select id="obj_id" name="func" data-native-menu="true"> 
     ... 
    </body> 
+0

残念ながら、これはうまくいきませんでしたが、Androidはコールを完全に無視しているようです。他のアイデア? –

+0

代わりに、私はonChangeが動作することを知らせていましたが、これは私にとってはあまり役に立ちません。ユーザーに彼らが変更したいと尋ねるプロンプトを使う必要があるからです。ドーパント)。ありがとう –

11

私はjQueryを使って同じ問題を抱えていたが、Androidはでクリックイベントを無視しているようですjavascript。もともと、jQueryを使って私のコードは次のようになります。

$("#element").click(function() { alert("message"); }); 

私はそれを変更しなければならなかった:あなたがすべてではjQueryを使用している場合

$("#element").on("touchend", function() { alert("message"); }); 

わからないが、これは役立ちます願っています。

1

注意:Cordova 3.4の入力にonclickをバインドすると動作しません。しかしdiv要素でうまく動作します。入力要素はselect要素のようにフォーム要素の一部であることを考慮すると、それはあなたの問題かもしれません。

0

https://ssl.gstatic.com 'unsafe-eval';スタイル - src 'self' 'unsafe-inline';モバイルアプリはウェブではありませんので、メディアのsrc * ">

+0

'編集は6文字以上でなければなりません。この記事で改善すべき点は他にありますか? - Oho SO。 – fWd82

1

user1183085's答えが正しいものであるindex.htmlをからこのコードを削除します。Androidはウェブアプリがそうであるように、イベントをクリックして認識していないが、これはローミングサービスを作りますネイティブの場合はphonegapが作成された理由ですが、Javaのアンドロイドライブラリではなくjqueryで動作するため、このようにコードを記述します:

すべてのWebインターフェイスと特別なボタンモバイルインタフェースを処理するためにontouchend要素を使用します。Here's私のコードの一部:

//this handles the login button events for the mobile touch of the user 
$("button.login-button").on("touchend", function() {alert('hello touch ! =o')}); 

//this handles the login button events for web clicks 
$("button.login-button").on("click", function() {alert('hello click ! =o')}); 

感謝のユーザuser1183085、私の人生を解く永遠=()

+0

マークアップを使用して回答をフォーマットする方法をお読みください。現時点では、読むのが非常に難しいので、ダウンボントに値するのと非常に近いです。言い換えれば、テキストの混乱だけでなく、あなたの答えが役立つことを望みます。 – GhostCat

+0

申し訳ありません私は新しいです...私の間違い、私はそれについて読んでいます。あなたの提案に感謝します – Prometeo

関連する問題