我使用WKWebView加载html页面,并使用evaluateJavaScript执行javascript函数。
我就是这样做的。
let request = URLRequest(url: "myhtmlpage.html") webView?.load(request)
myhtmlpage.html有对myfunctions.js的脚本引用
<script src="js/myfunctions.js" type="text/javascript"></script>CalculateTax(amount)webView?.evaluateJavaScript(CalculateTax('\(amount)');)执行一个java脚本函数来计算税收,并在myhtmlpage.html上显示税收。我想调试CalculateTax(amount) javascript函数。我使用了safari工具,并将断点放在CalculateTax(amount)的位置,但它没有到达断点。任何人都知道如何调试使用WKWebView,evaluateJavaScript方法执行的javascript函数。
发布于 2017-09-20 23:21:16
使用消息处理程序。您可以在JS中发布它们,这将将值返回给Swift,您可以在Xcode中将其打印到控制台。
首先,确保设置了内容控制器和配置:
var contentController = WKUserContentController()
var configuration = WKWebViewConfiguration()将自己添加为消息名的侦听器。然后将配置分配给内容控制器,将控制器分配给web视图:
contentController.add(self, name: "YOUR_MESSAGE_NAME")
configuration.userContentController = self.contentController
webView = WKWebView(frame: self.view.bounds, configuration: self.configuration)然后实现委托方法来侦听JS回发的消息:
extension YourViewController : WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if error != nil {
if let str = message.body as? String { // or whatever you cast to
print(str)
}
} else {
// error handling
}
}
}并发布来自JS的消息如下:
// YOUR_MESSAGE_NAME needs to match what you registered for in the WKUserContentController
window.webkit.messageHandlers.YOUR_MESSAGE_NAME.postMessage(MESSAGE_CONTENTS);https://stackoverflow.com/questions/46333003
复制相似问题