Cocoa webview UserAgent"webkit-legacy"问题

Sae*_* Oh 15 css macos cocoa webkit swift

我解决了这个问题 看下面的选定答案!

我一直在努力寻找导致OSX Cocoa应用程序的WebView与Safari不同的原因.事实证明,用户代理是不同的(有点明显吗?),我正在访问的网站不知道如何处理.

令人惊讶的是,这是https://messenger.com(Facebook聊天).

问题是它不会在屏幕上显示图片.它确实加载,但实际上并没有显示.看看这个..

测试应用的屏幕截图

如果你看看我编号为'2'的区域,你会看到空的空间.我没有审查那个.它只是空的.

所以这是我原来的问题链接:使用WebKit的简单Swift Cocoa应用程序:上传图片不起作用

我解决了第一个问题(感谢答案:D),但第二个问题仍然存在.

  1. 共享图片没有显示 - 我在图片中标记为2.
    • 再次,从其他浏览器或已发布的应用程序,它显示我与参与者共享的图片,如下所示.(当然我审查了这些照片) 显示共享图片的浏览器示例

为了调试这个,我打开了Inspect Element,我发现了这一点.

<body class=" webkit-legacy webkit mac x1 body_textalign Locale_en_US _z4_" dir="ltr">
Run Code Online (Sandbox Code Playgroud)

当我从Safari加载完全相同的页面时,我会看到:

<body class="safari webkit mac x1 body_textalign Locale_en_US _z4_" dir="ltr">
Run Code Online (Sandbox Code Playgroud)

所以我决定从我的应用程序的WebView和中提琴中替换该行!有用!所以...

TLDR:每次加载视图时如何才能完成这项工作?

我试图找到一些方法来设置我的用户代理到Safari,但我不能让它工作.有什么建议吗?

Sae*_* Oh 0

正如所承诺的,这就是答案。

我在类中添加了这个功能ViewController

func webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!) {
    webView.stringByEvaluatingJavaScriptFromString("document.body.className = 'safari webkit mac x1 Locale_en_US _z4_';")
}
Run Code Online (Sandbox Code Playgroud)

非常简单,但运行得非常好。

我的应用程序本身仍然存在一些问题(例如“下载图像”按钮不会触发文件资源管理器对话框),但基本功能如

  • 发送/接收消息
  • 查看共享图片

工作得很好。

我计划为此工作

  • 下载图片
  • 通知

如果您有兴趣帮助我,请评论!

感谢你的帮助 :)