WebKit笔记

加载网页时执行javascript代码

 

 let mWebView = WKWebView.init(frame: self.view.bounds)
        self.view.addSubview(mWebView)
        //加载请求
        let request = NSURLRequest.init(URL: NSURL.init(string: "http://www.baidu.com/")!)
        mWebView.loadRequest(request)
         
        //编写javascript代码,并在加载网页时执行
        let js1 = "var button = document.getElementsByTagName('button')[0];"
        let js2 = "button.parentNode.removeChild(button);"
        let js=js1+js2</span>
 
        let script = WKUserScript(source: js, injectionTime: WKUserScriptInjectionTime.AtDocumentEnd, forMainFrameOnly: true)
        mWebView.configuration.userContentController.addUserScript(script)

 

 我自己写了个简单的html网页,作为测试用,文件名为test

<html>
<head>
    <meta charset="utf-8">
    <title>测试网页</title>
    <style type="text/css">
        body button{
            color: red;
            background-color: blue;
            width: 200px;
        }
        .list{
            background-color: #ffff00;
        }
    </style>

</head>
<body>
    <br>
    <br>
    <br>
    <P>
   
    </P>
    <ul >
    </ul>
    <br>
    <button onclick="window.webkit.messageHandlers.YX.postMessage('专注探索')">按钮1</button>
    <button>按钮2</button>
    <button onclick="window.webkit.messageHandlers.{YX}.postMessage(kkkkkkkkkk)">这按钮3</button>

</body>
</html>

WKWebView获得网页传递的数据,和js进行交互

import UIKit
import WebKit
 
class ViewController: UIViewController ,WKScriptMessageHandler,WKUIDelegate,WKNavigationDelegate  {
 
    override func viewDidLoad() {
        super.viewDidLoad()
        //创建一个WKWebView,并添加到控制器的view中
        let mWebView = WKWebView.init(frame: self.view.bounds)
        self.view.addSubview(mWebView)
         
        //加载请求
     let url1 =  NSURL.fileURLWithPath("/Users/yinqixing/Documents/0102--自己编的网页/0102--自己编的网页Tests/test.html")
//        let url = NSBundle.mainBundle().URLForResource("test", withExtension: "html")
        let request = NSURLRequest.init(URL: url1)
        mWebView.loadRequest(request)
         
        //编写javascript代码,并在加载网页时执行
        let js1 = "var button = document.getElementsByTagName('button')[1];"
        let js2 = "button.parentNode.removeChild(button);"
        let js=js1+js2
     
 
        let script = WKUserScript(source: js, injectionTime: WKUserScriptInjectionTime.AtDocumentEnd, forMainFrameOnly: true)
        mWebView.configuration.userContentController.addUserScript(script)
 
        mWebView.UIDelegate = self
        mWebView.navigationDelegate = self
         
        //注意  控制器要遵守WKScriptMessageHandler这个协议
        //网页代码加入的交互代码: window.webkit.messageHandlers.YX.postMessage()
        mWebView.configuration.userContentController.addScriptMessageHandler(self, name: "YX")
      
      
         
         
    }
    //实现WKScriptMessageHandler协议中的方法
    func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
 
        print(message.body)
        //打印结果为  专注探索
        
    }

 

posted @ 2016-01-03 12:05  Y好大的棉花糖  阅读(428)  评论(0编辑  收藏  举报