在移动app混合开发中,必不可少的需要Javascript与原生应用进行交互。
下面以iOS平台为例,介绍在WebView中javascript与swift的交互。
1.swift调用javascript
swift调用javascript很简单,使用webview对象的一个方法即可实现:
webview.stringByEvaluatingJavaScriptFromString(“alert(‘啊~swift调用了我。’)”);
上面的代码用swift执行网页中的一个弹窗,在模拟器打开如下。
2. javascript调用swift
javascript不能直接调用swift,但可以通过重写UIWebView方法,利用shouldStartLoadWithRequest拦截uiwebview的请求来调用swift:
如在网页中规定这样一个请求:
<a href=“ios://doAction?a=1&b=2”>执行swift</a>
我们约定ios://为协议,doAction为执行动作,?a=1&b=2为参数。
在swift中重写webview方法来捕获链接:
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
var url = request.URL.absoluteString!;
println("捕获到链接:"+url);
if(url.hasPrefix("ios://")){
var a = (url asNSString).substringFromIndex(6)
println("动作:"+a);
//根据动作编写相应的swift代码。
return false;
}
return true;
}
上面的代码表示,若拦截到以ios://开头的请求,在控制台输出,并进行特殊处理。
如我们可以根据动作执行相关的swift代码。
© yuankeqiang | Powered by LOFTER