Swift stringByEvaluatingJavaScriptFromString

2024-02-14

我尝试在我的 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 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#//apple_ref/occ/instm/UIWebView/stringByEvaluatingJavaScriptFromString:但我收到一个错误“预期'。'分隔器”


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

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

这意味着 :

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

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

let result = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none'")

因为返回类型是optional https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_485,需要先拆开包装才能使用。 但要小心,它可能没有值(即它可能等于nil)并且展开 nil 值会导致运行时崩溃。

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

if let returnedString = result {
    println("the result is \(returnedString)")
}

这意味着:如果result is not nil然后解开它并将其分配给一个名为的新常量returnedString.

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

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

希望这对您有意义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift stringByEvaluatingJavaScriptFromString 的相关文章

随机推荐