2012-01-11 10 views
1

を使用していない私はNSURLProtocolをサブクラス化し、このコードのdidFinishLaunchingWithOptionsでそれを登録しました:私のアプリの最初のUIWebViewについてはカスタムNSURLProtocol第二のWebViewで

+ (void) registerProtocol 
{ 
    static BOOL registered = NO; 

    if (!registered) 
    { 
     [NSURLProtocol registerClass:[MyURLProtocol class]]; 
     registered = YES; 
    } 
} 

(メインウィンドウに)メソッドcanInitWithRequestがトリガされ、カスタムコードを実行できます。

しかし、私はUIViewControllerの中にあり、アプリケーションのある時点で(モーダルに表示されている)内部にある2番目のUIWebViewを持っています。 canInitWithRequestは2番目のUIWebViewには呼び出されません。したがって、カスタムコードを実行できません。これは、UIWebViewの両方のインスタンスが作成された後で、プロトコルが登録されたときにも当てはまります。

誰でも知っていますか?

[編集] ドワーフ!私はちょうどそれが2番目のwebviewにロードされているjavascriptのプレーンエラーであることがわかりました:( は両方のwebviewsで魅力のように動作します!

+0

問題はあなたのプロトコルの登録ではありません。一度登録するだけです。 UIWebViewでリクエストをどのようにロードしているのか不思議です。たとえば、[webView loadRequest:request]を呼び出していますか? – jimmyg

+0

実際にリクエストはjavascript/ajaxコールから起動され、私はcanInitWithRequestでそれをインターセプトしようとしています。 ( – user826955

+0

あなたが発見した修正の詳細を提供することはできますか?あなたのアプリケーションに固有のjsエラーであっても、私は非常に同じ問題に遭遇しています。問題を理解しようとしている私の髪の毛。 –

答えて

2

これはあなたの状況と解決策に関連している多くの試練と苦難の後、今日、NSURLProtocolのサブクラスによって傍受される目的のcにメッセージを送信するajax呼び出しは、同じURLを2回以上送信すると思われる場合、cacheをfalseに設定する必要があります。そう:。

$.ajax({ 
     url:"atavistcommand://" + name, 
     data:JSON.stringify(data), 
     type:"GET", 
     processData:false, 
     cache:false)}; 

キャッシュ= trueの場合、対物cは同じURLに後続の要求を受信することはありません

関連する問題