作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 javascript 从 swift 获取值。我正在使用 IUWebView。我使用这段 Javascript 来获取值:
var myVar = null;
function getValue(key) {
webkit.messageHandlers.getValue.postMessage(key);
return myVar;
}
这一段 Swift 返回值:
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
if(message.name == "getValue") {
if let value = NSUserDefaults.standardUserDefaults().stringForKey(message.body as! String) {
self.webView?.evaluateJavaScript("myVar = "+value+";", completionHandler: nil)
}
}
}
javascript 代码正确调用 swift 代码,并且 swift 代码从 NSUserDefaults
获取值,但 javascript 函数未返回结果。
你能帮我解决这个问题吗?
最佳答案
看来您可能正在使用第三方框架,但 UIWebview 的 stringByEvaluatingJavaScriptFromString(_:) 方法返回 js 函数返回的任何内容,作为字符串。所以如果你的 JavaScript 是
function doSomething() {
return 'test'
}
然后从 iOS 调用 doSomething()
let js = "doSomething()"
let result = webView.stringByEvaluatingJavaScriptFromString(js)
result
应该是一个值为 "test"
注意:必须退回某些东西。我相信您的代码可能无法工作,因为您正在设置一个值,而不是返回任何内容。
关于Javascript 从 swift 中获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706154/
我是一名优秀的程序员,十分优秀!