【问题标题】:How to debug javascript code inside a WKWebView如何在 WKWebView 中调试 javascript 代码
【发布时间】:2014-11-10 08:51:36
【问题描述】:

我在 WKWebView 中运行 web 应用时遇到了一些问题(特别是:某些按钮没有响应)。我使用this tutorial 作为指导,并成功地让 webview 显示我的 webapp。所以现在我想调试 javascript 代码。

我知道 webapp 可以工作,因为我已经在 android webview 以及无数浏览器(包括我正在使用的 iPad 模拟器上的 safari)中尝试过它。经过一番快速的谷歌搜索,我发现了how to debug javascript inside a UIWebView using Safari。遗憾的是,这似乎不适用于新的 WKWebView。

当我导航到Develop->iPad Simulator 时,我被告知“没有可检查的应用程序”。我已经用一个带有 UIWebView 的简单应用程序尝试了同样的事情,并且通过 safari 进行调试在那里完美运行。

有没有办法在 WKWebView 中调试 javascript 代码?

要重现我的问题(使用 swift),请在 xCode 6 中启动一个新的单屏项目,复制下面提供的代码(由 kinderas 提供)到您的 ViewController.swift 文件中,然后将插座拖到 @ 下的 View 987654327@ 在Main.storyboard 文件的文档大纲中。如有混淆,请参阅我上面链接的教程。

import UIKit
import WebKit

class ViewController: UIViewController {

    @IBOutlet var containerView : UIView! = nil
    var webView: WKWebView?

    override func loadView() {
        super.loadView()

        self.webView = WKWebView()
        self.view = self.webView!
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        var url = NSURL(string:"http://www.kinderas.com/")
        var req = NSURLRequest(URL:url)
        self.webView!.loadRequest(req)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

【问题讨论】:

    标签: javascript ios debugging ios8 wkwebview


    【解决方案1】:

    更新:2017/09/11

    Safari 的最新版本可以做到这一点。只需启用develop menu in Safari - developer.apple.com

    旧:

    您需要安装nightly build of Safari 并使用它。我正在开发的应用程序遇到同样的问题。一旦我安装了 nightly build,我现在就使用它,我的所有 WKWebViews 都会显示在开发菜单中。

    希望那是您缺少的部分!

    【讨论】:

    • 在最新的夜间版本中,我看不到 WKWebViews。我必须启用某些东西吗?
    • 嗨@a.stringham,我们在这里所说的safari 设置是开发平台(OS x)对吧?但我正在 iPad 模拟器(通过 Xcode)中调试和运行我的 WkWebView 嵌入式浏览器应用程序。这些设置是否有助于调试我在嵌入式浏览器中运行的代码?
    • 您不再需要每晚构建的 Safari,只需使用常规的最新 Safari 浏览器进行调试
    • 有这个工作的人可以详细说明解决方案吗?我有 Safari 11.01 和开发者控制台,虽然里面没有任何关于 wkwebview 的内容,而且我什至没有 ios11 用户代理。第一个链接坏了。
    • 链接对我来说已损坏。请在您的答案中添加文字以防止出现此问题。
    【解决方案2】:

    在您的 web 视图中打开网站或 html 页面,然后打开 safari。单击开发,然后转到模拟器,您将在那里找到您的网站标题。一旦你打开它,你会看到 javascript 调试器、控制台和你能想到的一切。

    【讨论】:

    • 在 Safari 中获取“开发”菜单:打开“偏好设置”,在“高级”选项卡下,选中“在菜单栏中显示开发菜单”。
    【解决方案3】:

    你可以试试http://jsconsole.com/

    执行 :listen,它会给你一个脚本标签来粘贴到你的网页中。

    您在该页面中拥有的每个 console.log 都会将它们的输出提供给该页面。

    如果你关闭 jsconsole 页面,下次你应该在 html 代码中更改脚本 src 但你也可以听那个脚本 src:

    :listen XXXXX-XXXXX-XXXX-XXXXX
    

    希望对你有帮助。

    【讨论】:

    • 这对其他人来说可能是正确的解决方案,但我需要一种无需接触 javascript 代码即可进行调试的方法。
    • jsconsole.com 现在好像坏了, :listen 今天没有输出。
    • 是的,[jsconsole.com/] 现在坏了。它总是给出参考错误并说命令未定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2017-10-08
    • 2020-12-27
    • 2016-11-10
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多