2011-08-09 9 views
3

私はこの問題を解決するために、 "モバイルウェブ"アプリを開発しており、JavaScriptに完全に依存しています。特定のAndroidデバイス、特にサムスンギャラクシーファミリーでは、window.resizeソフトキーボードが表示されたときにイベントが発生し、私のスクリーンの高さを短くします。。ユーザーがソフトキーボードの "Go"ボタンをタップすると、ソフトキーボードの高さより低い高さで私のアプリがリロードされます。ソフトキーボードがJavaScriptで非表示になった後、正しいAndroid WebViewの画面サイズを確認しますか?

今、私はのwindow.resizeイベントを聞いています。そのため、ユーザーがデバイスを回転させると、すべてが正しく動作します。しかし、私はwindow.resizeイベントをプログラムで起動させる方法を見つけ出すことを望んでいます、私はデバイスを回転させるときに実行されるすべてのアクションがトリガーされるようにします。

これはできますか?

答えて

0

stackoverflowのquestionからthisコードを使用しない場合は、jQueryのモバイル用途のjQuery trigger()

を使用している場合:

あなたはIE上でfireEventを使用し、W3Cのは、dispatchEvent他のほとんどの ブラウザ上ですることができます。発生させるイベントを作成するには、ブラウザに応じて createEventまたはcreateEventObjectのいずれかを使用できます。ここ

要素に イベントdataavailableを起動(プロトタイプからの)コードの自明ピースである:

var event; 
    if (document.createEvent) { 
    event = document.createEvent("HTMLEvents"); 
    event.initEvent("dataavailable", true, true); 
    } else { 
    event = document.createEventObject(); 
    event.eventType = "ondataavailable"; 
    } 

    event.eventName = eventName; 
    event.memo = memo || { }; 

    if (document.createEvent) { 
    element.dispatchEvent(event); 
    } else { 
    element.fireEvent(event.eventType, event); 
    } 

アップデート:

IE用fireEvent()dispatchEvent()がありますIE以外のブラウザ用のメソッド。イベントを手動で起動することができます。そのトリックは、window.resizeのようなイベントを作成し、それを発生させることです。私はこれを試みたことはありません。しかし、私はそれが助けることを望む。

+0

私はこれを試しましたが、問題を解決しませんでした。私がこの技術でブラウザから発砲されたのと同じイベントを起こすことができれば、それは助けになるかもしれませんが、私はまだそれをどうやって行うのか分かりません。 – elrasguno

+0

jQueryを使用していますか?もしそうなら、あなたは$(window).trigger( 'close');と書く必要があります。 – Mohsen

0

私はこの同じ問題を抱えていて、イベントが発生するのを諦め、キーボードが消えた後にメタビューポートを変更しました。ここでの回答を参照してください:https://stackoverflow.com/a/11321889/1500269