2012-04-27 96 views
1

我有一個從互聯網加載內容的WebView。 如果我有一個使用'_blank'屬性的鏈接,沒有任何反應。WebView打開'_blank'鏈接

到目前爲止,我已經嘗試設置我的WebView委託,但我無法得到它註冊,我甚至不能得到一個NSLog回來,所以我必須使用它錯了。代碼如下:

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

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

理想情況下想什麼,我是,每當用戶點擊其中的一個網頁視圖鏈接時,鏈接始終爲網頁視圖內打開,無處。

這可能嗎?

通過研究我發現其他方法,但是不知道如何使用它們來得到我想要的結果:

webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener: 

我完全難倒,所以我會很感激你的幫助。

在此先感謝大家。

+0

這可能幫助:http://conecode.com/news/2011/05/ios-tutorial-creating-a-web-view-uiwebview/ – hanumanDev 2012-04-27 23:25:44

+0

@hanumanDev,這不會幫助,因爲它是關於文章iOS'UIWebView',問題是關於Mac'WebView'。 – 2012-04-28 00:32:20

回答

3

如果你不想打開一個新的窗口,但只需要打開你的當前WebView對象的請求,你只需要做到這一點在你的委託:

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request 
{ 
    [[sender mainFrame] loadRequest:request]; 
    return sender; 
} 
+0

這完全是我在找的東西,我只是不知道如何鏈接代表?我是否將WebView中的箭頭從FrameLoadDelegate繪製到文件所有者? – Cristian 2012-04-28 00:32:08

+0

我問的原因是因爲目前這種方法似乎沒有得到執行?再次感謝Rob – Cristian 2012-04-28 00:34:12

+1

該方法是WebUIDelegate協議的一部分,因此您需要將任何實現該方法的對象分配爲WebView的UIDelegate。在你的示例代碼中,你已經在App Delegate中實現了它,所以你需要將'WebView'的'UIDelegate'出口鏈接到'AppDelegate'對象。 – 2012-04-28 00:34:41

1

此博客文章提供了一個使用JavaScript的解決方案,基本上從鏈接中刪除目標屬性。

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

+0

當在Chrome上進行測試時,確實會刪除所有不良的屬性,正是我想要的,但是代碼似乎沒有對我的WebView做任何事情?我已經把它放在WebViewProgressFinished方法中,但鏈接仍然無法點擊? – Cristian 2012-04-27 23:38:13

+0

無論如何,這是一個好主意! – Cristian 2012-04-28 00:42:42

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 

做你想要達到的目標。