将数据从 JavaScript 传递到 Swift。 UserContentController 函数从未调用过问题
Posted
技术标签:
【中文标题】将数据从 JavaScript 传递到 Swift。 UserContentController 函数从未调用过问题【英文标题】:Passing data from JavaScript to Swift. UserContentController function never called problem 【发布时间】:2020-01-11 09:51:50 【问题描述】:我卡住了,函数“userContentController”永远不会调用。
userContentController 函数
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
print("Function Called")
let showData = message.body as? String
print(showData ?? "No Value received")
viewDidLoad
super.viewDidLoad()
let configuration = WKWebViewConfiguration()
configuration.userContentController.add(self, name: "send")
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let wweb = WKWebView(frame: rect, configuration: configuration)
if let filePath = Bundle.main.url(forResource: "Script", withExtension: "html")
let request = NSURLRequest(url: filePath)
wweb.load(request as URLRequest)
脚本
<html>
<script>
window.webkit.messageHandlers.send.postMessage("Hell from javascript");
</script>
<!--<h1><script src="http://scripts.myradiostream.com/s33/14866/status.js?online=BU RADiO OnAir&offline=BU RADiO OffAir&nosource=BU RADiO Coming OnAir Soon"></script></h1>
-->
</html>
【问题讨论】:
【参考方案1】:尝试在脚本中传递字典而不是字符串。
示例: window.webkit.messageHandlers.send.postMessage("body": "来自 JavaScript 的地狱")
【讨论】:
在 Swift 中:让 dict = message.body as? NS词典;让 str = dict?["body"] as?字符串以上是关于将数据从 JavaScript 传递到 Swift。 UserContentController 函数从未调用过问题的主要内容,如果未能解决你的问题,请参考以下文章
将地理定位从 Swift 2 ViewController 传递给 Javascript 方法
Swift - 如何将数据从 UITableViewCell 类传递到 UIViewController
如何将 swift 对象传递给 javascript (WKWebView / swift)