1

OS X 10.8.2。HTML ドキュメントを読み込んでいる webView があります。(ユーザー入力に応じて、一度に 1 つずつ。)

ユーザーが各 HTML ドキュメント内のメニュー要素をクリックすると、コードに通知されるように、WebScriptObjects を使用しています。次に、コンテキスト固有のドキュメントをメモリ内に作成loadHTMLString:baseURLし、webView のメインフレームを呼び出すことで、それをユーザーに提供できます。

(余談: この作業の 2 つ目の理由は、WebKit にページとリンクされた JavaScript ファイルを強制的に更新させるために、HTML ドキュメントを変更することでした。WebKit は JavaScript を積極的にキャッシュして再利用し、リンクされた JS への変更はこれを修正するために、JavaScript インクルードをオンザフライで書き直し、タイムスタンプを付けて、WebKit に強制的に再インクルードさせました.非常に面倒です.WebKit がこの分野で改善されたかどうか知っている人はいますか?)

Mountain Lion の前は、コードは宣伝どおりに機能し、エラーは発生しませんでした。

Mountain Lion で実行すると、2 つの破損が発生しました。

absoluteString1) NSURL から を取得するときにフラグメントが含まれます。つまり、文字列「#someAnchor」が文字列の末尾に追加されます。path代わりにメソッドを使用することで修正されました。

2) 後続のロードが webFrame で機能しなくなりました。具体的には... loadRequest または loadHTMLString:baseURL: を使用して、1 つのページ (page1.html など) を webFrame にロードできます。受信したデリゲート コールバックは次のとおりです。

webView:didStartProvisionalLoadForFrame:

に続く...

webView:didFinishLoadForFrame:

大成功。

問題:

しかし、通常は WebScriptObjects を介して新しいページをロードする HTML 要素 (page2.html など) をクリックすると、代わりに次のコールバックが返されます。

webView:didStartProvisionalLoadForFrame:

と...

webView:didFailProvisionalLoadWithError:forFrame:

エラー コードは 999 (NSURLErrorCancelled) です。

ちょっとした調査によると、これは非常に一般的なエラーであり、特に iOS の世界ではそうです。そして、それは通常、無視するだけです。ただし、ページの読み込みが壊れているため、無視できません。このエラーは、最初のページの読み込みから次のページの読み込み試行までの時間の長さに関係なく発生します。最初のページが完全に読み込まれます (webView:didFinishLoadForFrame:コールバックによって示されます)。

ページをロードする前に stopLoading を呼び出してみましたが、効果がありませんでした。

誰でも提案できますか?ありがとうございました。

4

1 に答える 1

0

この問題の回避策: 次のページをすぐに読み込もうとする代わりに、次のように近い将来にスケジュールを設定します:

performSelector: @selector(doScheduledPageChange)
            withObject: nil
            afterDelay: 0.01];

これは機能します。

于 2013-02-22T00:38:08.467 に答える