2015-11-18 33 views
0

如何向uiwebview中检测到的所有网址添加参数?我想用这个参数追加所有的url字符串:?app = 1。如何向uiwebview中的所有网址添加参数

现在我只用1个UIWebViewDelegate:

func webViewDidFinishLoad(webView: UIWebView) { 
} 

有另一种委托我可以用它来实现这一目标?

我曾尝试:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let url = (request.URL?.absoluteString)! + "?app=1" 
    let requestURL = NSURL(string: url) 
    let req = NSURLRequest(URL: requestURL!) 
    //Load url into WebView container 
    //webView.loadRequest(req) 


    return true; 
} 
+2

可能的复制[斯威夫特 - UIWebView的修改URL(HTTP://计算器。 com/questions/32253997/swift-uiwebview-modify-url) – JAL

回答

1

如果是足够了,当链接实际上是由用户选择的是做,可以考虑改变它在你的web视图的委托的

- webView:shouldStartLoadWithRequest:navigationType: 

和采取适当的行动,例如返回false并手动加载修改后的url。

编辑回应编辑的问题:

尝试沿着这些路线的东西(没有IDE方便ATM)的

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

if let url = request.URL { 
    if url.absoluteString.rangeOfString("?app=1") != nil { 
     // everything is fine. 
     return true 
     } 
    else { 
    let newRequest = // build new request here 
    webView.loadRequest(newRequest) 
    return false 
    } 
} 


return true; 
} 
+0

感谢您的快速回复@JanGreve,但是我应该在这个委托中实现如何将参数添加到uiwebview的url? –

+0

该方法的参数为您提供生成的请求,其中包括已选择的NSURL。我会检查它是否具有适当的get参数,如果是,则让它通过,否则,通过附加参数创建一个新的NSURL,然后将新url发送到Web视图进行加载,并通过返回false来阻止原始请求。 – SmokeDispenser

+0

[Take](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIWebViewDelegate/webView:shouldStartLoadWithRequest:navigationType :) [a ](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/index.html#//apple_ref/occ/instp/NSURLRequest/URL)[look](https: //developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html#//apple_ref/swift/cl/c:objc%28cs%29NSURL)。 – SmokeDispenser

相关问题