2015-11-18 68 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

相關問題