EvaluateJavaScript调试javascript函数
我正在使用EvaluateJavaScript调试javascript函数,javascript,swift,mobile-safari,Javascript,Swift,Mobile Safari,我正在使用WKWebView加载html页面,并使用evaluateJavaScript执行javascript函数 以下是我如何做到这一点 加载html页面,其中包含对Java脚本和CSS文件的大量引用 let request=URLRequest(url:“myhtmlpage.html”) webView?加载(请求) myhtmlpage.html具有对myfunctions.js的脚本引用 在myfunctions.js中,我有一个函数调用calculateAX(amount) 在第
WKWebView
加载html页面,并使用evaluateJavaScript执行javascript函数
以下是我如何做到这一点
let request=URLRequest(url:“myhtmlpage.html”)
webView?加载(请求)
myhtmlpage.html具有对myfunctions.js的脚本引用
calculateAX(amount)
webView?.evaluateJavaScript(CalculateTax(“\(amount)”;)
执行java脚本函数,在myhtmlpage.html上计算税收并显示税收我想调试
calculateAX(amount)
javascript函数。我使用了safari开发工具,并将断点放在CalculateTax(amount)
的位置,但它没有到达断点。任何人都知道如何调试使用WKWebView
,evaluateJavaScript方法执行的javascript函数。使用消息处理程序。您可以在JS中发布它们,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);
谢谢,韦斯!如果我必须从javascript执行中评估某些值,这是一个很好的解决方法。我们已经在使用javascript中的xcode回调来获取google分析的统计数据。我在寻找一种方法来进行逐行评估(F10,step out)。然而,我能够用一个黑客来调试它。我使用命令行执行来调用我想要测试的javascript函数。从xcode复制负载,并在执行时将其传递给javascript。对不起,我解释得不好。