为了账号安全,请及时绑定邮箱和手机立即绑定

回调 javascript postMessage ios swift

回调 javascript postMessage ios swift

叮当猫咪 2022-11-03 15:20:55
请告诉我,有一个 ios 应用程序,它包含 WebKitView,其中有一个包含以下代码的站点:<div id="test" style="height: 40px; width: 100px; background-color: powderblue;">Hello</div><script type="text/javascript">document.getElementById("test").addEventListener("click", function () {   window.webkit.messageHandlers.test.postMessage("TEXT");});</script>申请代码:import UIKitimport WebKitclass ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler {        var webView: WKWebView!        override func loadView() {        webView = WKWebView()        webView.navigationDelegate = self        view = webView    }        override func viewDidLoad() {        super.viewDidLoad()        let url = URL(string: "https://site")!        webView.load(URLRequest(url: url))        let config: WKWebViewConfiguration = WKWebViewConfiguration()        config.userContentController.add(self, name: "test")        webView = WKWebView(frame: self.view.frame, configuration: config)        webView?.navigationDelegate = self        self.webView?.load(URLRequest(url:url))    }        func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {        if message.name == "test", let messageBody = message.body as? String {            print(messageBody)        }    }}在xcode中点击div时,日志中显示如下错误[general] Connection to daemon was invalidated可能是什么问题呢?对不起我的英语不好。
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我已将主包中的共享 HTML 和 javascript 代码添加为“example.html”,并对您的代码进行了更改。它在我的最后工作正常。


override func viewDidLoad() {

        super.viewDidLoad()

        //Url from the html

        let url = URL(fileURLWithPath: Bundle.main.path(forResource: "example", ofType: "HTML") ?? "")

        

        // Configuring WKEWebview

        let config: WKWebViewConfiguration = WKWebViewConfiguration()

        config.userContentController.add(self, name: "test")

        webView = WKWebView(frame: self.view.frame, configuration: config)

        webView?.navigationDelegate = self

        

        //Constraints related changes

        webView.translatesAutoresizingMaskIntoConstraints = true

        webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]


        self.view.addSubview(self.webView)

        // Load file

        self.webView?.loadFileURL(url, allowingReadAccessTo: Bundle.main.bundleURL)

    }

您可以使用加载您的网页


self.webView.load(URLRequest(url: "https://www.site"))

试试看,如果您遇到任何问题,请告诉我。


查看完整回答
反对 回复 2022-11-03
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信