1

インターネットからコンテンツをロードするWebViewがあります。'_blank'属性を使用するリンクがある場合、何も起こりません。

これまで、WebViewデリゲートを設定しようとしましたが、登録できません。NSLogを取り戻すことさえできないため、間違って使用している必要があります。コードは次のとおりです。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [tmpView setUIDelegate:self];
}

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
    NSLog(@"HEY THERE");
    return sender;
}

理想的には、WebViewでリンクがクリックされるたびに、リンクは常にそのWebView内で開かれ、他の場所では開かれないということです。

これは可能ですか?

調査を通じて他の方法を見つけましたが、それらを使用して希望する結果を得る方法がわかりません。

webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener:

私は完全に困惑しているので、本当にあなたの助けに感謝します。

みなさん、よろしくお願いします。

4

3 に答える 3

3

新しいウィンドウを開きたくないが、現在のWebViewオブジェクトでリクエストを開くだけの場合は、デリゲートでこれを行う必要があります。

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
    [[sender mainFrame] loadRequest:request];
    return sender;
}
于 2012-04-28T00:31:22.787 に答える
1

このブログ投稿は、JavaScriptを使用して基本的にリンクからターゲット属性を削除するソリューションを提供します。

http://blog.mikeweller.com/2009/06/uiwebview-doesnt-open-targetblank-links.html

于 2012-04-27T23:25:13.090 に答える
0

あなたは呼び出すことができます

(WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request

それはうまくいきました。

実装することもできます

(void)webView:(WebView *)sender decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request newFrameName:(NSString *)frameName decisionListener:(id<WebPolicyDecisionListener>)listener

あなたが達成したいことをするために。

于 2013-01-24T08:31:59.973 に答える