如何从WKWebView Swift调用此javascript函数?

时间:2018-07-26 01:16:30

标签: javascript ios swift function wkwebview

所以我的网站上有此功能:

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

从iOS应用程序中,我必须调用此函数并将JSON传递给它,如何实现? 我已经尝试使它工作3天了,但是由于某些问题无法正常工作,我放弃了。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

// 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)
}