0

webview で stringByEvaluatingJavaScriptFromString を介していくつかの JavaScript コードを実行しています。「document.title」のような単純なものを実行しない限り、js の結果をコードに記録しようとしても出力はありません。

しかし、Safari でリモート デバッガーを使用すると、まったく同じコードをコンソールで実行し、正しい結果を得ることができます。

ここで何が起こっているのか、javascript がアプリで動作するのを妨げるアイデアはありますか? デバッガーで動作するため、明らかにコードは問題ありません。アプリの Web ビューで JavaScript を実行する際に制限はありますか?

ありがとう!

4

1 に答える 1

0

また、Javascript/Native インターフェースを機能させるのにいくつか問題があったため、私の学習の一部を以下に示します。

  • Javascript インタープリターがエラーに遭遇するとすぐに (セミコロンの欠落などに関係なく)、黙って動作を停止し、続行しません。
  • ばかげているように聞こえますが、実際に@"alert(1);"機能するstringByEvaluatingJavaScriptFromString:かどうかを確認してください。
  • stringByEvaluatingJavaScriptFromString 経由で送信されるコマンドは短くしてください。javascript メソッドを作成し、ネイティブ コードから呼び出します。たとえば、
    [self.webView stringByEvaluatingJavaScriptFromString:@"doalliwant();"];
    そのインターフェイスを介して 100 kb ファイルをパイプする代わりに。
  • https://code.google.com/p/jsbridge-to-cocoa/のようなものを使用して、Javascript から Obj-C コードにデータを送信します。これにより、Javascript で最小限のロギングを実現できます。(それを Obj-C に送信し、そこにログを記録することにより)
  • UIWebview にリモート デバッグを使用します。WWDC セッション「600 - iOS での UIWebView と Web サイトのデバッグ」で説明されています。iOS 開発者プログラムの Web サイトから入手できます。基本を有効にするには、[設定] -> [Safari] -> [詳細設定] に移動し、Web インスペクターを有効にします。デバイスを Mac に接続し、デバッガーで XCode とアプリを起動します。Mac で Safari を起動します。Safari の設定を開き、最後のタブで開発者メニューを有効にします。サファリを再起動します。新しい開発者メニューに iOS デバイスの名前が表示され、アプリを選択してデバッグを開始できます。

これで始められることを願っています...

于 2012-12-01T18:01:17.387 に答える