【发布时间】:2015-11-23 19:37:16
【问题描述】:
我解决了这个问题。看看下面选择的答案!
我一直在努力寻找导致 OSX Cocoa 应用程序的 WebView 与 Safari 的行为不同的原因。事实证明,用户代理是不同的(很明显?),而我正在访问的网站不知道如何处理。
令人惊讶的是,它是https://messenger.com(Facebook 聊天)。
问题是它没有在屏幕上显示图片。它确实加载,但实际上并没有显示。看看这个。。
如果您查看我编号为“2”的区域,您只会看到空白区域。我没有对此进行审查。它只是空的。
这是我原来的问题链接:Simple Swift Cocoa app with WebKit: Upload picture doesn't work
我解决了第一个问题(感谢答案:D),但第二个问题仍然存在。
为了调试这个,我打开了 Inspect Element,我发现了这个。
<body class=" webkit-legacy webkit mac x1 body_textalign Locale_en_US _z4_" dir="ltr">
当我从 Safari 加载完全相同的页面时,我会看到:
<body class="safari webkit mac x1 body_textalign Locale_en_US _z4_" dir="ltr">
所以我决定从我的应用程序的 WebView 中替换该行,中提琴!有用!所以...
TLDR:如何在每次加载视图时进行这项工作?
我试图找到一些方法来将我的用户代理设置为 Safari,但我无法让它工作。请问有什么建议吗?
【问题讨论】:
-
hmm.. 我的问题甚至可能不是那个.. 当我从 Safari 更改该行(从 safari webkit... 到 webkit-legacy webkit...)时,它工作得非常好..啊啊啊……css的世界……-_-
-
你使用的是 UIWebView 还是 WKWebView?
-
我正在使用 UIWebView
-
这可能只是他们的浏览器检测和 CSS 的问题。您可能想使用 UIWebView 委托的
webViewDidFinishLoad:方法,然后stringByEvaluatingJavaScriptFromString:执行一些Javascript 来修复body上的class? -
或者,您可能想尝试 WKWebView(不确定它在 OS X 上是否可用),它使用不同的 WebKit 版本,可能会以不同的方式检测到。
标签: css swift macos cocoa webkit