Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EvaluateJavaScript调试javascript函数_Javascript_Swift_Mobile Safari - Fatal编程技术网

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函数

以下是我如何做到这一点

  • 加载html页面,其中包含对Java脚本和CSS文件的大量引用

    let request=URLRequest(url:“myhtmlpage.html”)
    webView?加载(请求)

    myhtmlpage.html具有对myfunctions.js的脚本引用

  • 在myfunctions.js中,我有一个函数调用
    calculateAX(amount)

  • 在第一步加载myhtmlpage.html页面之后。我有一个逻辑拉必要的日期来计算“金额”做了计算后,我使用
    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。对不起,我解释得不好。