欢迎访问湖北成教网,更多超值体验尽在无忧助学网!

IT培训

免费咨询电话027-59239395
 
您的位置:湖北成人高考 > 武汉PHP培训 > 武汉PHP培训IT知识 > iOS中UIWebView与其中网页的javascript的交互

iOS中UIWebView与其中网页的javascript的交互

发布时间:2017-11-10 16:59:24浏览数:1110次来源:

1.本地语言调js的方式与android中的方式类似,也是向WebView控件发送要调用的js语句

2. js调本地语言,则不是像android那样直接调一个全局变量的方法,而是通过location.href=xx://yy这样的方式触发UIWebViewDelegate接口实现者的webView shouldStartLoadWithRequest navigationType方法,该方法应该判断目标路径(即xx://yy)的schema(即xx)是否实际是要调用swift,如果是,则按约定执行之,并返回false阻止网页路径变化,如果不是要调用swift,则返回true,让改网页继续正常加载目标url

androidiOS对比,它们都用了伪url的技术,但android是在本地语言调js时使用了伪url(该urlschemajavascript),而iOSjs调本地语言时使用了伪url(该url是自定义的标识),这个错落很有意思。

swift代码:

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var theWebView: UIWebView!

    override func viewDidLoad() {

         //加载本地html

        let res = NSBundle.mainBundle().pathForResource("index",ofType:"html")

        let url = NSURL(fileURLWithPath: res!);

        let request = NSURLRequest(URL: url);

        self.theWebView.loadRequest(request);

        self.theWebView.delegate = self;

    }

     //js可以调用swift

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

        //判断是不是js在调用swift,如果是,则处理并返回false

        if(request.URL!.scheme == "myschema"){

            let host = request.URL!.host;

            if(host == "go"){

                let query = request.URL!.query!;

                print(query);

                let split = query.componentsSeparatedByString("=");

                let text = split[1];

                self.theWebView.stringByEvaluatingJavaScriptFromString("changeContent(\"" + text + "\")");

            }

            return false;

        }else{

            return true;

        }

    }

     //swift调用js

    @IBAction func btnClicked(sender: AnyObject) { 

        self.theWebView.stringByEvaluatingJavaScriptFromString("changeContent(\"123\")");

    }

}

网页代码:

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

</head>

<body>

    <span id="theSpan"></span>

    <button onclick="doIt()">js调用swift</button>

    <input type="text" id="t">

    <script>

         //swift可以调用js

        function changeContent(str){

            document.getElementById('theSpan').innerHTML = str;

        }

         //js调用swift

        function doIt(){

            document.location.href = "myschema://go?a=" + document.getElementById("t").value;

        }

    </script>

</body>

</html>


本文编辑来源:武汉PHP培训
继续浏览有关武汉PHP培训的文章
湖北成考网微信二维码
扫一扫获取最新成考信息

关注武汉PHP培训微信公众号:m_51grant_com ,专业PHP培训信息网

扫描左侧“微信二维码”即可第一时间通过手机获取最新“武汉PHP培训”重要学习信息及资料。

咨询QQ:2097117734

电话:027-59239395 手机同微信:18771136633

无忧助学名师免费一对一量身定制服务!
为什么要告诉武汉PHP培训?
  • 10万多学员的选择
  • 价格更低 额外礼品
  • 跟踪服务 解决问题