2

でページの読み込みがいつ終了するかを確実に知りたいですUIWebViewここで概説されているdidStartLoad/の間の「参照カウント」アプローチを認識しており、私にとってはちょっとうまくいきますが、あまり自信がありません。毛むくじゃらになり、Javascript が. つまり、次のことについては不明です。didFinishLoad ifsdocument.location

  1. UIWebViewDelegateそれが処理する必要があるすべてのパワーに対して、非常に簡潔で、ほとんどドキュメントがありませんdidStartLoad/didFinishLoadが実際に「frameset/frame」と「iframe」を意味する「frames」に対してのみ呼び出されていることを誰でも確認できますか?
  2. 上記の DOM による負荷とリクエストのリダイレクト (イベントも生成する) を区別するにはどうすればよいですか?
  3. 私の観察では、リダイレクトを除いて、それぞれdidStartLoadの前に があります。shouldStartLoadWithRequestこれは信頼できる行動ですか?
  4. 私は何かを見逃していますか、それともどのリクエストが特定のものを発信したかを知る方法はありませんdidStartLoadか? [[webView request] URL]与えられた唯一のコンテキストのため、常に同じ URL を返します。これは、UIWebView が最初にロードするように要求された URL です。
4

2 に答える 2

0

少なくともUIWebViewNavigationTypefromを使用すると、現在の読み込みがユーザーのクリックによるものか、ページ内で発生したその他のものによるものかを識別できます。shouldStartLoadWithRequestページがいつ確実にロードされるかを知ることは役に立ちませんが、ユーザーによって新しいコードがトリガーされる前に、いくつかのコードを起動することができます。2 つのページ間で行う必要があるタスクの性質によっては、役立つ場合があります。

于 2013-10-21T20:31:21.183 に答える
0
  1. 私はできません。
  2. 知らない。
  3. 知らない。
  4. わかりません。

役に立つ答えですね。

明らかに、私UIWebViewDelegateUIWebView.

UIWebViewアクティビティを観察するための私の試みは次のとおりです。

  • iOS 6 の読み込み時にオブザーバーを追加: オブザーバーが呼び出されませんでした。
  • それをしようとしている:

デリゲート メソッドのサンプル:

- (void)webViewDidStartLoad:(UIWebView *)webView {
    [self.activityIndicator startAnimating];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if (!webView.loading) {
        [self.activityIndicator stopAnimating];
    }
}

これは非常にうまく機能します。

あなたが言及しているJavaScriptとiframeのトリックでこのコードを試してみるべきだと思います。それは役に立ちませんが、あなたが話している JavaScript を所有している場合は、信号をアプリに送信して、さらに読み込みアクションが進行中であることを示すことを検討することもできます ( や のようなカスタム スキームで URL を呼び出すmyApp://didStartLoadingSomethingWithJavascriptDudeなどmyApp://didFinishLoadingSomethingWithJavascriptDude) 。

于 2013-03-19T21:08:06.620 に答える