Swift stringByEvaluatingJavaScriptFromString

Fab*_*gue 8 javascript uiwebview webview ios swift

我尝试在我的WebView上使用一些新的JavaScript

stringByEvaluatingJavaScriptFromString 功能

我不熟悉语法,所以我试过

 func stringByEvaluatingJavaScriptFromString( "document.documentElement.style.webkitUserSelect='none'": String) -> String? 
Run Code Online (Sandbox Code Playgroud)

如下所示https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#//apple_ref/occ/instm/UIWebView/stringByEvaluatingJavaScriptFromString:但是我收到"预期"的错误".分隔器"

Nic*_* B. 9

您尝试调用的方法原型如下:

func stringByEvaluatingJavaScriptFromString(_ script: String) -> String?

这意味着 :

  • 它需要一个String单一的参数
  • 它返回一个可选的String(String?)

您需要有一个UIWebView使用它的实例:

let result = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none'")
Run Code Online (Sandbox Code Playgroud)

由于返回类型是可选的,因此需要先将其解包,然后才能使用它.但要小心,它可能没有值(即它可能等于nil),并且展开nil值会导致运行时崩溃.

因此,您需要在使用返回的字符串之前检查它:

if let returnedString = result {
    println("the result is \(returnedString)")
}
Run Code Online (Sandbox Code Playgroud)

这意味着:如果result不是,nil则打开它并将其分配给一个新的常量调用returnedString.

此外,您可以将它包装在一起:

let script = "document.documentElement.style.webkitUserSelect='none'"
if let returnedString = webView.stringByEvaluatingJavaScriptFromString(script) {
    println("the result is \(returnedString)")
}
Run Code Online (Sandbox Code Playgroud)

希望这对你有意义.