我有一個UIWebView,我希望所有鏈接打開一個新的頁面。UIWebView檢測當JavaScript正在加載一個新頁面
我有這樣的代碼,當用戶點擊一個鏈接來檢測並打開一個新頁面上的鏈接:
- (BOOL) webView:(UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*) request navigationType: (UIWebViewNavigationType)navigationType {
//If the user clicked a link don't load it in this webview
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSURL* URLToGoTo = [request URL];
self.fullWebView.url = URLToGoTo;
[self.navigationController pushViewController:fullWebView animated:YES];
return NO;
}
//Else this is the webview being loaded for the first time, let it load.
return YES;
的問題是一些網站使用JavaScript來打開像這樣的鏈接:
win = window.open("/magic/card.asp?name="+cardname+"&set="+set+"&border="+border, windowName, params);
if (!win.opener)
{
win.opener = window;
}
不幸的是,這些類型的鏈接沒有UIWebViewNavigationTypeLinkClicked屬性,並會在我的UIWebView的同一個窗口中打開。
我試着看看URL的scheme屬性,看它是否是「javascript」,但它看起來與普通鏈接使用的URL完全相同。
任何人都可以想出一種方法來檢測網頁正在打開的JavaScript函數?
我想,最壞的情況下,我可以用一個布爾值,以確定這是否是第一次我的UIWebView被加載並加載所有後續鏈接在新頁,但必須有一個更好的解決方案
謝謝!
我試過了,但它抓住我第一次從字符串加載視圖自己。也許我可以檢測何時第一次加載視圖並重定向所有後續加載? – itgiawa 2012-02-23 02:25:46
當您將HTML字符串加載到WebView中時,webView:shouldStartLoadWithRequest:navigationType:中的請求URL是'nil'或''about:blank'' - 您應該能夠捕獲這些以區分初始加載和隨後的。 – 2012-02-23 10:10:57