gpt4 book ai didi

javascript - EvaluateJavaScript 调试 javascript 函数

转载 作者:行者123 更新时间:2023-11-28 06:11:46 53 4
gpt4 key购买 nike

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

这是我的做法。

  1. 使用大量对 javascript 和 CSS 文件的引用加载 html 页面。

    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)');)在 myhtmlpage.html 上执行一个 java 脚本函数来计算税费和显示税费。

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

最佳答案

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

首先,确保您已设置内容 Controller 和配置:

var contentController = WKUserContentController()
var configuration = WKWebViewConfiguration()

将您自己添加为消息名称的监听器。然后将配置分配给内容 Controller ,并将 Controller 分配给 web View :

contentController.add(self, name: "YOUR_MESSAGE_NAME")
configuration.userContentController = self.contentController
webView = WKWebView(frame: self.view.bounds, configuration: self.configuration)

然后实现委托(delegate)方法监听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 - EvaluateJavaScript 调试 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333003/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com