我需要帮助来运行Javascript警报&;在Xcode中创建的简单webview应用程序中确认

我需要帮助来运行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.

我需要帮助运行javascript警报,在一个使用xcode创建的简单应用程序中确认,其中包含一个webview

我在ViewController.swift中的代码是:

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)
}