我尝试使用新的
在我的WebView上使用一些javascript stringByEvaluatingJavaScriptFromString
功能
我不熟悉语法,所以我试过
func stringByEvaluatingJavaScriptFromString( "document.documentElement.style.webkitUserSelect='none'": String) -> String?
如此处所示https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#//apple_ref/occ/instm/UIWebView/stringByEvaluatingJavaScriptFromString:但我收到“预期”错误。分隔符“
答案 0 :(得分:9)
您尝试调用的方法原型如下:
func stringByEvaluatingJavaScriptFromString(_ script: String) -> String?
这意味着:
String
作为单个参数String
(String?
)您需要有一个UIWebView
的实例才能使用它:
let result = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none'")
由于返回类型为optional,因此需要先将其解包,然后才能使用它。
但要小心,它可能没有值(即它可能等于nil
)并且解包nil值会导致运行时崩溃。
因此,您需要在使用返回的字符串之前检查它:
if let returnedString = result {
println("the result is \(returnedString)")
}
这意味着:如果result
不是nil
,则将其解包并将其分配给名为returnedString
的新常量。
此外,您可以将其与:
包装在一起let script = "document.documentElement.style.webkitUserSelect='none'"
if let returnedString = webView.stringByEvaluatingJavaScriptFromString(script) {
println("the result is \(returnedString)")
}
希望这对你有意义。
答案 1 :(得分:0)
此方法用于直接从uiwebview
调用javascript脚本let htmlTitle = myWebView.stringByEvaluatingJavaScriptFromString("document.title");
println(htmlTitle)
http://sourcefreeze.com/uiwebview-example-using-swift-in-ios/
答案 2 :(得分:0)
1)创建JavaScript常量:
let jsString: String = "document.documentElement.style.webkitUserSelect='none'"
2)将evaluateJavaScript功能用于WKWebView(iOS 8.0 +)
self?.webView?.evaluateJavaScript("", completionHandler: { result, error in
print(result)
})
或stringByEvaluatingJavaScriptFromString for UIWebView(iOS 2.0–12.0)
let result = webView.stringByEvaluatingJavaScriptFromString(jsString)
print(result)
同样来自Apple文档:
stringByEvaluatingJavaScriptFromString:方法同步等待 完成JavaScript评估。 如果您加载的网页内容 您尚未审核的JavaScript代码,调用此方法可能会挂起 您的应用。最佳实践是采用WKWebView类并使用其 而不是EvaluationJavaScript:completionHandler:方法。