17

PhoneGap を使用して、モバイル デバイスのネイティブ機能を使用します。内部的にはどのように機能しますか? JavaScript メソッドから PhoneGap の実装クラスにアクセスするにはどうすればよいですか? 誰かがこれを説明できますか?

4

4 に答える 4

9

Cordova iOS がメッセージを WebView に渡す方法について詳しく調べました。これは、iOS から JavaScript にメッセージを渡す方法です。

クラスにはUIWebViewと呼ばれるメソッドがありstringByEvaluatingJavaScriptFromStringます。

iOS Cordova プロジェクトのいくつかのファイルを見ると、JavaScript が、その関数に対して実行される文字列として渡されています (例: CDVPlugin.m )

iOS が新しい DOM ノード ( <script>alert('from iOS');</script>. 上記で参照されているドキュメントには、次のように記載されているという点で、後者だと思います。

JavaScript の実行時間は、最上位のエントリ ポイントごとに 10 秒に制限されています。スクリプトが 10 秒以上実行されると、Web ビューはスクリプトの実行を停止します。これはコード内のランダムな場所で発生する可能性が高いため、意図しない結果が生じる可能性があります。この制限が課されるのは、JavaScript の実行によってメイン スレッドがブロックされる可能性があるためです。そのため、スクリプトが実行されている場合、ユーザーは Web ページを操作できません。

JavaScript の割り当ても 10 MB に制限されています。JavaScript の合計メモリ割り当てでこの制限を超えると、Web ビューで例外が発生します。

そのUIWebViewの内部状態への特別なアクセスなしに、実際にこれらの制限を課す方法がわからないので、新しいDOMノードを挿入しているだけではないと思います。

于 2012-07-05T14:50:01.440 に答える
5

完全にはわかりませんが、ここに情報チュートリアルがあります。開始するのに適した場所です。

于 2012-05-29T18:42:19.087 に答える
4

ソース コードは公開されているため、どのように実装されているかを調べることができます。これはプラットフォームごとに異なるため、すべての OS をカバーする単一の回答を得ることはできません。iOS では、独自の URL スキームを使用してブラウザーの場所を強制的に変更することにより、ネイティブ コードを呼び出すことができる UIWebView を使用して行われます。この変更により、ネイティブ コード内のメソッドが呼び出され、URL スキームと渡されたパラメーターを調べてから、関連する処理を実行できます。次に、iOS 内の Objective-C から Javascript を呼び出す方法があり、これを使用して結果を Javascript 側に戻すことができます。

詳細なプロセス全体は長すぎて、ここの回答で説明できません。

もちろん、他のプラットフォームでの実装方法は異なります。

このメカニズムは API の背後で抽象化できるため、PhoneGap アプリは特定のプラットフォームの実装の詳細の違いを認識しません。

詳細が必要な場合は、PhoneGap フォーラムで質問するか、ソース コードを参照してください。

于 2012-05-29T20:37:25.607 に答える
0

これも良いものです: http://blog.quadnode.com/2011/12/05/phonegap-how-does-it-work/

于 2012-08-28T01:51:37.157 に答える