一步一步學習Swift之(四)玩轉UIWebView


實現原理:

1.通過UIWebView的stringByEvaluatingJavaScriptFromString方法來觸發腳本

2.通過自定義連接來觸發oc代碼

實現過程

@IBOutlet weak var webView: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
       webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://passport.cnblogs.com/user/signin")!))
        webView.delegate=self
    }
    //連接改變時
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool{
       var rurl =  request.URL?.absoluteString
        if (rurl!.hasPrefix("ios:")){
          var method =  rurl!.componentsSeparatedByString("@")[1]
            if method == "signin_go"{
                 signin_go()
            }
            return false
        }
       return true
    }
    //加載完成時
    func webViewDidFinishLoad(webView: UIWebView){
        //注入腳本,這個腳本把登錄方法js重寫為連接
        var jsPath =  NSBundle.mainBundle().pathForResource("app", ofType: "js")
        var jsContent:NSString = NSString (contentsOfFile: jsPath!, encoding: 0, error: nil)!
        jsContent=jsContent.stringByReplacingOccurrencesOfString("\n", withString: "")
        webView.stringByEvaluatingJavaScriptFromString(jsContent as String)
    }
    
    func signin_go(){
    NSLog("-我執行了signin_go-")
    }
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = '
function signin_go(){
   location.href="ios:@signin_go";
}
';
document.getElementsByTagName('head')[0].appendChild(script);

 

轉載請注明來源:http://www.cnblogs.com/wuxian/p/4470634.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM