如何从 WKWebView Swift 调用这个 javascript 函数?

Posted

技术标签:

【中文标题】如何从 WKWebView Swift 调用这个 javascript 函数?【英文标题】:How to call this javascript function from WKWebView Swift? 【发布时间】:2018-07-26 01:16:30 【问题描述】:

所以我的网站上有这个功能:

function appQrHandlerSet(result) 
    jQuery(function() 
        jQuery('#readed_qr_url').val(result.url);
        jQuery(this).getLayerForm('#qr_handler_layer');
            );      

ios 应用程序中,我必须调用此函数并将 JSON 传递给它,我该如何实现? 我一直在努力让它工作 3 天,但我放弃了,因为有些东西不能正常工作。

提前致谢!

【问题讨论】:

【参考方案1】:

根据您的代码,参数result 应包含属性url。我们假设 url 包含您要传递的 JSON 数据。 尝试以下两种方法:

// Approach 1:
func callJS() 
    let json = " url:\"An url with json?\""
    let scriptString = "let result=\(json); appQrHandlerSet(result);"
    webView?.evaluatejavascript(scriptString, completionHandler:  (object, error) in

    )


// Approach 2:
func initWebViewWithJs() 
    let config = WKWebViewConfiguration()
    config.userContentController = WKUserContentController()

    let json = " url:\"An url with json?\""
    let scriptString = "let result=\(json); appQrHandlerSet(result);"
    let script = WKUserScript(source: scriptString, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
    config.userContentController.addUserScript(script)

    webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 400), configuration: config)

【讨论】:

非常感谢,第一种方法解决了我所有的问题!

以上是关于如何从 WKWebView Swift 调用这个 javascript 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 swift 对象传递给 javascript (WKWebView / swift)

WKwebview,js调用用Swift函数播放声音

当特定屏幕以 html 显示时,从 WKWebView 向 Swift 获取通知

如何在 Swift 4 中从 WKWebView 获取 cookie 值?

如何在swift 4中从WKWebView中的网页中删除DIV标签?

从应用程序的文档目录加载本地 html 文件 swift wkwebview