首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EvaluateJavaScript调试javascript函数

EvaluateJavaScript调试javascript函数
EN

Stack Overflow用户
提问于 2017-09-20 23:06:33
回答 1查看 1.3K关注 0票数 1

我使用WKWebView加载html页面,并使用evaluateJavaScript执行javascript函数。

我就是这样做的。

  1. 加载html页面,其中包含大量指向javascripts和CSS文件的引用。 let request = URLRequest(url: "myhtmlpage.html") webView?.load(request) myhtmlpage.html有对myfunctions.js的脚本引用 <script src="js/myfunctions.js" type="text/javascript"></script>
  2. 在myfunctions.js内部,我有一个函数名为CalculateTax(amount)
  3. 在myhtmlpage.html第一步加载页面之后。我有一个逻辑来提取必要的日期来计算“金额”,在计算之后,我使用webView?.evaluateJavaScript(CalculateTax('\(amount)');)执行一个java脚本函数来计算税收,并在myhtmlpage.html上显示税收。

我想调试CalculateTax(amount) javascript函数。我使用了safari工具,并将断点放在CalculateTax(amount)的位置,但它没有到达断点。任何人都知道如何调试使用WKWebView,evaluateJavaScript方法执行的javascript函数。

EN

回答 1

Stack Overflow用户

发布于 2017-09-20 23:21:16

使用消息处理程序。您可以在JS中发布它们,这将将值返回给Swift,您可以在Xcode中将其打印到控制台。

首先,确保设置了内容控制器和配置:

代码语言:javascript
复制
var contentController = WKUserContentController()
var configuration = WKWebViewConfiguration()

将自己添加为消息名的侦听器。然后将配置分配给内容控制器,将控制器分配给web视图:

代码语言:javascript
复制
contentController.add(self, name: "YOUR_MESSAGE_NAME")
configuration.userContentController = self.contentController
webView = WKWebView(frame: self.view.bounds, configuration: self.configuration)

然后实现委托方法来侦听JS回发的消息:

代码语言:javascript
复制
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的消息如下:

代码语言:javascript
复制
// YOUR_MESSAGE_NAME needs to match what you registered for in the WKUserContentController
window.webkit.messageHandlers.YOUR_MESSAGE_NAME.postMessage(MESSAGE_CONTENTS);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46333003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档