问题
I try to use some javascript on my WebView with the new
stringByEvaluatingJavaScriptFromString function
I m not quiet familiar with the syntax so i tried
func stringByEvaluatingJavaScriptFromString( "document.documentElement.style.webkitUserSelect='none'": String) -> String?
as shown here https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#//apple_ref/occ/instm/UIWebView/stringByEvaluatingJavaScriptFromString: but i get a error that "Expected '.' separator"
回答1:
The method you are trying to call is prototyped as the following:
func stringByEvaluatingJavaScriptFromString(_ script: String) -> String?
This means :
- It takes a
Stringas single parameter - It returns an optional
String(String?)
You need to have an instance of UIWebView to use it:
let result = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none'")
Because the return type is optional, it needs to be unwrapped before you can use it.
But be careful, it may not have a value (i.e. it may be equal to nil) and unwrapping nil values leads to runtime crashes.
So you need to check for that before you can use the returned string:
if let returnedString = result {
println("the result is \(returnedString)")
}
This means: If result is not nil then unwrap it and assign it to a new constant called returnedString.
Additionally, you can wrap it together with:
let script = "document.documentElement.style.webkitUserSelect='none'"
if let returnedString = webView.stringByEvaluatingJavaScriptFromString(script) {
println("the result is \(returnedString)")
}
Hope this makes sense to you.
回答2:
This method is used to call the javascript script directly from uiwebview
let htmlTitle = myWebView.stringByEvaluatingJavaScriptFromString("document.title");
println(htmlTitle)
http://sourcefreeze.com/uiwebview-example-using-swift-in-ios/
来源:https://stackoverflow.com/questions/26056132/swift-stringbyevaluatingjavascriptfromstring