Webview 检测 javascript 错误或 url 更改

Posted

技术标签:

【中文标题】Webview 检测 javascript 错误或 url 更改【英文标题】:Webview detect javascript errors, or url changes 【发布时间】:2017-03-23 13:11:49 【问题描述】:

class ViewController: UIViewController, UIWebViewDelegate
    @IBOutlet var containerView: UIView!
    @IBOutlet var webView: UIWebView!
   override func loadView() 
        super.loadView()
    
    override func viewDidLoad() 
        super.viewDidLoad()
        webView.delegate = self
        if let url = URL(string: "http://www.google.com/") 
            let request = URLRequest(url: url)
            webView.loadRequest(request)
        
    
    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
           
    func webViewDidFinishLoad(_ webView: UIWebView) 
        print("webview finished load")
        print(webView.request?.url)
    

所以我需要的是尝试检测 1 - javascript 错误。 2 - 如果不是,则 url 更改。 3 或者如果不是,我可以通过 javascript 在我的控制器中调用一个函数吗?我从我的控制器调用一个函数到 javascript?

无论哪种方式,我都需要一个问题的解决方案,我的 webview 出现了问题。

【问题讨论】:

【参考方案1】:

Web 视图可以与 Javascript 代码通信,但通信有限且复杂。要回答您的具体问题:

    Javascript 错误 - 您可以直接在网页中检测到它们。 如果成功,网址会更改 - 您可以直接在网页中执行此操作 (window.location = ...)。 查看控制器更改错误 - 您可以通过将 URL 更改为特定 URL 来做到这一点,例如window.location = 'http://myredirect?error=Execution+failed'。您的 Web 视图控制器可以使用其委托轻松检测 URL 的变化并做出相应的反应。

【讨论】:

以上是关于Webview 检测 javascript 错误或 url 更改的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 浏览器或 WebView 内部检测

在 webview 中启用 Javascript 时,Android Webview 未检测到链接点击

使用 PHP / Javascript 检测应用内浏览器 (WebView)

通过Android WebView中的javascript检测点击HTML按钮

通过Android WebView中的javascript检测点击HTML按钮

检测 Webview 错误并显示消息