PHP开发工程师@温州。博客关于:技术、生活、读书、互联网。

iOS中javascript与swift进行交互

在移动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代码。





评论

© 袁克强的博客 | Powered by LOFTER