【问题标题】:Is there a way to use the WebKit web inspector from a Cocoa WebView object?有没有办法从 Cocoa WebView 对象中使用 WebKit Web 检查器?
【发布时间】:2009-03-29 17:54:10
【问题描述】:

我想在 OS X 上基于 WebKit 的自定义浏览器中使用 WebKit 网络检查器。是否可以在 webview 对象上使用网络检查器?如果有,怎么做?

【问题讨论】:

    标签: cocoa webkit


    【解决方案1】:

    一个真正简单的方法......在终端里...... ⌘ ⬆ ☺

    defaults write com.yourcompany.yourbundleid WebKitDeveloperExtras TRUE

    (对于 OSX 10.8,请改用 defaults write com.yourcompany.yourbundleid WebKitDeveloperExtras -bool true)。

    注意:您必须将 com.yourcompany.yourbundleid 更改为您的特定“应用程序”(或任何公司的应用程序 bundle ID 可能) 之前这将起作用!**

    这件事的好处...没有办法忘记将其取出、将其关闭、将其注释掉等...这是本地设置...并且可以为任何启用 webkit 的应用程序设置...如果您没有看到开发人员菜单或其他......不要担心......

    Right☝(单击) 在 Web 视图上并转到“显示检查器”。

    此外,按照同样的思路,以下可能会做一些事情。但我还没有尝试过,所以不确定..

    defaults write com.yourcompany.yourbundleid IncludeDebugMenu 1

    【讨论】:

    • 我必须使用 defaults write com.yourcompany.yourbundleid WebKitDeveloperExtras -bool true 才能工作。
    • 在这个时代它被称为“检查元素”而不是“显示检查器”,但已经足够接近了。
    【解决方案2】:

    在您发送-[NSUserDefaults registerDefaults:] 时,在您的默认用户默认值中将WebKitDeveloperExtras 设置为YES。当然,这适用于整个应用程序。

    请记住,用户可以将其更改为 NO,因此不要假设它是 YES——如果它很重要(例如,在自定义上下文菜单时),请务必检查。

    警告:此首选项不一定只启用元素检查器。 Apple 可能会在未来扩展它以控制菜单栏中的调试菜单。您可能会发现这是不可接受的风险。

    【讨论】:

    • 这行得通!惊人的!旁注:它在第一次加载时设置设置,直到应用程序重新启动才会生效。不知道如何解决这个问题——也许提供一个默认属性文件......
    • loglibrarian:提前设置。如果 applicationWillFinishLaunching: 不够好,请在 main() 函数中设置它。
    • 好吧,我知道我在这里碰运气,但是有没有办法以编程方式启动网络检查器?也许是私有 api?
    • 私有 API 是私有的,因为它总有一天会消失。 (或者,如果您非常幸运,也可以直接公开。)如果您觉得大胆,请转储 WebKit 并尝试使用 WebInspectorWindowController。确保你保护一切,以便在它发生变化时优雅地失败。
    • 或者更粗的 (?) 只需从 WebKit.org 下载源代码
    【解决方案3】:

    苹果recommends:

    defaults write com.example.myApp WebKitDeveloperExtras -bool true
    

    但是,据我所知,如果您在沙盒之外运行应用程序(在开发的某些阶段可能需要这样做),这可能不再有效。如果您遇到这个问题,对我有用的是在 NSGlobalDomain 中设置 WebKitDeveloperExtras 键的值:

    defaults write NSGlobalDomain WebKitDeveloperExtras -bool true
    

    【讨论】:

      【解决方案4】:

      在我的情况下(MacOSX 10.6.5)它不起作用。

      我必须在我的 webView WindowController 的 windowDidLoad 方法中执行以下操作:

      /* 初始化 webInspector。 */ [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"WebKitDeveloperExtras"]; [[NSUserDefaults standardUserDefaults] 同步];

      【讨论】:

      • 我发现我的应用需要重新启动才能生效。在 webview 实例化之前是否需要发生这种情况?
      【解决方案5】:

      我尝试这样做,但看不到网络检查器。

      不是和[[NSUserDefaults standarduserDefaults] registerDefaults:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:@"WebKitDeveloperExtras"]]一样吗?

      【讨论】:

      • 减去 ] 在前面,是的。
      • 谢谢。从 webkit-dev 邮件列表中,我收到了另一个回复。它应该像 +initialize 一样在最早的时候完成,或者它可以在 Unix 提示符下发出。默认写入 com.yourcompany.programname WebKitDeveloperExtras -bool true
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多