我需要帮助来运行Javascript警报&;在Xcode中创建的简单webview应用程序中确认
我需要帮助运行javascript警报,在一个使用xcode创建的简单应用程序中确认,其中包含一个webview 我在ViewController.swift中的代码是:我需要帮助来运行Javascript警报&;在Xcode中创建的简单webview应用程序中确认,javascript,ios,swift,webview,Javascript,Ios,Swift,Webview,我需要帮助运行javascript警报,在一个使用xcode创建的简单应用程序中确认,其中包含一个webview 我在ViewController.swift中的代码是: import UIKit import WebKit class ViewController: UIViewController { @IBOutlet weak var WebView: WKWebView! override func viewDidLoad() { super.
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet weak var WebView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "MY_URL")
let request = URLRequest(url: url!)
WebView.load(request)
}
}
首先要补充的是
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
其次,在viewDidLoad()中向代码添加deleagte
这是我可以从您的代码中提供的基本信息
有关更多详细信息,请参阅,这可能会消除您的所有疑问:D我修复此代码的问题:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var WebView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
WebView = WKWebView(frame: self.view.frame)
WebView.uiDelegate = self
WebView.navigationDelegate = self
view.addSubview(WebView!)
let url = URL(string: "MY_URL")
let request = URLRequest(url: url!)
WebView.load(request)
// Do any additional setup after loading the view, typically from a nib.
}
func webView(_ WebView: WKWebView,
runJavaScriptAlertPanelWithMessage message: String,
initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping () -> Void) {
let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
let title = NSLocalizedString("OK", comment: "OK Button")
let ok = UIAlertAction(title: title, style: .default) { (action: UIAlertAction) -> Void in
alert.dismiss(animated: true, completion: nil)
}
alert.addAction(ok)
present(alert, animated: true)
completionHandler()
}
func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
completionHandler(true)
}))
alertController.addAction(UIAlertAction(title: "Cancella", style: .default, handler: { (action) in
completionHandler(false)
}))
self.present(alertController, animated: true, completion: nil)
}
}您的代码没有告诉我们任何信息。问题是什么?您需要添加WebView的委托方法,并查找url和javascript函数谢谢您的快速回答。您能告诉我应该在哪个文件中插入委托方法吗?你有一些代码的例子吗?谢谢你的答复。我尝试了代码,但是webview显示的页面上的警报仍然不起作用
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet weak var WebView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
WebView = WKWebView(frame: self.view.frame)
WebView.uiDelegate = self
WebView.navigationDelegate = self
view.addSubview(WebView!)
let url = URL(string: "MY_URL")
let request = URLRequest(url: url!)
WebView.load(request)
// Do any additional setup after loading the view, typically from a nib.
}
func webView(_ WebView: WKWebView,
runJavaScriptAlertPanelWithMessage message: String,
initiatedByFrame frame: WKFrameInfo,
completionHandler: @escaping () -> Void) {
let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
let title = NSLocalizedString("OK", comment: "OK Button")
let ok = UIAlertAction(title: title, style: .default) { (action: UIAlertAction) -> Void in
alert.dismiss(animated: true, completion: nil)
}
alert.addAction(ok)
present(alert, animated: true)
completionHandler()
}
func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
completionHandler(true)
}))
alertController.addAction(UIAlertAction(title: "Cancella", style: .default, handler: { (action) in
completionHandler(false)
}))
self.present(alertController, animated: true, completion: nil)
}