标签:
加载网页时执行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)
//打印结果为 专注探索
}
标签:
原文地址:http://www.cnblogs.com/iosshare/p/5095997.html