如何从 WKWebView Swift 调用此 javascript 函数?
How to call this javascript function from WKWebView Swift?
所以我的网站上有这个功能:
function appQrHandlerSet(result) {
jQuery(function() {
jQuery('#readed_qr_url').val(result.url);
jQuery(this).getLayerForm('#qr_handler_layer');
});
}
在 iOS 应用程序中,我必须调用此函数并将 JSON 传递给它,我该如何实现?
我已经尝试让它工作 3 天了,但我放弃了,因为有些地方不对劲。
提前致谢!
根据您的代码,参数 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)
}
所以我的网站上有这个功能:
function appQrHandlerSet(result) {
jQuery(function() {
jQuery('#readed_qr_url').val(result.url);
jQuery(this).getLayerForm('#qr_handler_layer');
});
}
在 iOS 应用程序中,我必须调用此函数并将 JSON 传递给它,我该如何实现? 我已经尝试让它工作 3 天了,但我放弃了,因为有些地方不对劲。
提前致谢!
根据您的代码,参数 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)
}