如何在UIWebView中使用stringByEvaluatingJavaScriptFromString而不是Swift中的performSelectorOnMainThread显示JavaScript警报对话框?
在Objective-C中,以下代码在如何在UIWebView中使用stringByEvaluatingJavaScriptFromString而不是Swift中的performSelectorOnMainThread显示JavaScript警报对话框?,javascript,ios,swift,performselector,stringbyevaluatingjavascr,Javascript,Ios,Swift,Performselector,Stringbyevaluatingjavascr,在Objective-C中,以下代码在viewDidLoad中工作: [self.myWebView performSelectorOnMainThread: @selector(stringByEvaluatingJavaScriptFromString:) withObject:@"alert('Test')" waitUntilDone:NO]; 该代码建议如下: 它说,performselectornmainthread与stringByEvaluatingJavaScriptFro
viewDidLoad
中工作:
[self.myWebView performSelectorOnMainThread:
@selector(stringByEvaluatingJavaScriptFromString:)
withObject:@"alert('Test')" waitUntilDone:NO];
该代码建议如下:
它说,performselectornmainthread
与stringByEvaluatingJavaScriptFromString
一起工作。这将显示一个警报对话框,单击“确定”按钮可关闭该对话框。但是,dispatch\u async
不工作,对话框冻结,无法按下OK按钮
问题是:如何使上述对话功能在Swift中工作?如何将代码转换为Swift
问题是Objective-C中使用的performSelectorOnMainThread
在Swift中不可用
如果我在viewDidLoad
中直接调用下面的代码,设备将在启动屏幕上挂起:
override func viewDidLoad() {
super.viewDidLoad()
myWebView.stringByEvaluatingJavaScriptFromString("alert('test')");
我已经尝试了执行选择线程,但结果要么是冻结的启动屏幕,要么是冻结的警报对话框
有人能告诉我如何调用
stringByEvaluatingJavaScriptFromString
以在Swift中显示JavaScript警报对话框吗?谢谢。我已通过加载网页并在webviewdiffinishload
中调用stringByEvaluatingJavaScriptFromString
解决了此问题
解决方案如下:
import UIKit
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var myWebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
var myPath = NSBundle.mainBundle().pathForResource("index", ofType: "html")
myWebView.delegate = self
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: myPath!)!))
}
func webViewDidFinishLoad(webView: UIWebView) {
myWebView.stringByEvaluatingJavaScriptFromString("alert('Hello')")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}