swift-初探webView与JS交互

公司接下来的项目需要用swift内嵌h5来实现, 以前没有做过swift项目, 现在慢慢将所学的一点一滴记录一下 一个是怕自己忘了- =, 再就是希望大家看到能帮助我哈哈哈
前几天想要直接用swift上手- =发现连初始化什么的都给忘记了, 又乖乖回去先用OC简单的做了一个webView的界面
效果如下:

接下来, 我就一点点的把OC的代码用swift编写了


import UIKit
//要导入JavaScriptCore.framework库
import JavaScriptCore

//在此签订UIWebViewDelegate协议
class ViewController: UIViewController, UIWebViewDelegate {
    //输入框
    var textFiled = UITextField.init()
    var webView = UIWebView.init()
    

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.   
        
        //初始化textfield
        textFiled.frame = CGRectMake(20, 40, 260, 30)
        textFiled.borderStyle = .Bezel
        textFiled.clearButtonMode = .WhileEditing
        textFiled.backgroundColor = UIColor.whiteColor()
        self.view.addSubview(textFiled)

        //开始运行btn
        let btn = UIButton.init(frame: CGRectMake(290, 40, 30, 30))
        btn.setTitle("GO", forState: UIControlState.Normal)
        btn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
        btn.addTarget(self, action: #selector(ViewController.btnAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(btn)
        
        //后退btn
        let backBtn = UIButton.init(frame: CGRectMake(btn.frame.origin.x + 40, btn.frame.origin.y, 30, 30))
        backBtn.setTitle("<", forState: UIControlState.Normal)
        backBtn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
        backBtn.addTarget(self, action: #selector(ViewController.backBtnAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(backBtn)
        
        //前进btn
        let forwardBtn = UIButton.init(frame: CGRectMake(backBtn.frame.origin.x + 40, backBtn.frame.origin.y, 30, 30))
        forwardBtn.setTitle(">", forState: UIControlState.Normal)
        forwardBtn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
        forwardBtn.addTarget(self, action: #selector(ViewController.forwardBtnAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(forwardBtn)
        
        
        webView.frame = CGRectMake(0, 80, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - 80)
        webView.backgroundColor = UIColor.lightGrayColor()
        self.view.addSubview(webView)
        
 
        //设置代理(不要忘记!如果不设置就无法调用webView的代理方法)
        webView.delegate = self

    
    }
    /**
     * parameters就是参数,return type是返回类型
 
       func <#name#>(<#parameters#>) -> <#return type#> {
             <#function body#>
        }
    */
    func btnAction(btn:UIButton){
        //加载textfield中的网址
        let request = NSURLRequest.init(URL: NSURL.init(string: "http://" + textFiled.text!)!)
        webView.loadRequest(request)
        
    }

    func backBtnAction(backBtn:UIButton) {
        webView.goBack()
    }
    
    func forwardBtnAction(forwardBtn:UIButton)  {
        webView.goForward()
    }
    
    /**
      *网页加载完成调用此方法
      */
    func webViewDidFinishLoad(webView: UIWebView) {
        //调用提示框方法
        setAlertShow()
        
    }
    
    //显示提示框
    func setAlertShow() {
        
        let jsString = String(format:"alert(123)")
        print(jsString)
        //交互
        webView.stringByEvaluatingJavaScriptFromString(jsString)
       
    }

运行效果如下:

swift版webView.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,261评论 25 709
  • 我想象中的未来是在大学毕业后在拍照和旅行中度过的,但我深知我做不到如此洒脱。身边的同学都说这想法好难实现。但我相...
    沈语甜阅读 4,626评论 0 1
  • 挑战365天|第2天 文/依依思言 我所在的科室是神经外科,也叫脑外科。收治的病人,通常不是脑外伤就是脑肿瘤、脑出...
    依依思言阅读 6,223评论 13 8
  • 越来越深信人可以选择性的失忆,最近看见什么会想到什么,而且之前经历的痛苦不安也是真的一点都没有印象。 最近时不时地...
    安子暖暖阅读 2,662评论 0 2
  • 昨晚21点在公司的微信工作群宣布三条工作规定:1、令行禁止;2、有指令,必有回应;3、多沟通,少埋怨。要求...
    元吉利贞阅读 4,110评论 0 1