私はWebKitベースのアプリケーションを持っています。ユーザーが新しいページを開くアクション(リンクのクリックなど)を開始すると、そのURLを傍受してアプリケーションで開くか、Safariに蹴り出したいかを選択します。Cocoa WebViewでユーザーが開始した要求を識別する方法は?
理想的には、最初のリクエストを読み込み順序で、またはユーザーの操作から直接発生したリクエストを特定したいと思います。また、フレーム内のトップレベルURLへの変更を特定できれば十分でしょう。代わりにSafariにバウンスすることにした場合、リクエストを取り消す必要があるという警告があります。
私はwebView:decidePolicyForNavigationAction:request:frame:decisionListenerを実装しました。ページのロード中に行われたすべてのリクエストを見ることができます。ユーザーによってトリガーされたリクエストと、Javascriptによって開始されたリクエスト(REST)は、そのようなことを呼び出します。
単純なリンクでは、アクション情報からWebActionNavigationTypeを取得できます。しかし、ユーザが別のページにナビゲートするJavascriptのonclick()ハンドラを持つ要素をクリックすると、ナビゲーションタイプは「その他」になり、他のすべてのJavascriptリクエスト(つまり元の要求)。
他にもこれに取り組んでいますか?すべてのポインタ?ありがとう!