强制WKWebView显示桌面版本

时间:2019-01-16 10:51:15

标签: ios swift macos cocoa wkwebview

我有一个NSViewController,它在NSView内的特定位置显示各种WKWebView。如果WKWebView的框架变小-它将切换到网站的移动版本。有没有办法始终在WKWebView中显示完整的(台式机)网站?

我的第一个想法是注入一些JavaScript并将视口设置为特定大小,以强制网站显示“桌面”视图。

let viewportScriptString = "var meta=document.createElement('meta');meta.name=\"viewport\";meta.content=\"width=1920\";document.getElementsByTagName('head')[0].appendChild(meta);"

let viewportScript = WKUserScript(source: viewportScriptString, injectionTime: .AtDocumentStart, forMainFrameOnly: true)

let controller = WKUserContentController()
controller.addUserScript(viewportScript)

let config = WKWebViewConfiguration()
config.userContentController = controller

let nativeWebView = WKWebView(frame: CGRect.zero, configuration: config)

不幸的是,这不起作用,并且网站仍然处于缩放状态。为了演示我尝试实现的行为,请参见以下屏幕截图。

test

== EDIT ==

感谢您指出一些类似的问题。我尝试了以下适用于其他用户的解决方案。不幸的是我没有运气。也许WKWebView在macOS上有所不同-其他问题与iOS有关。

  • NSUserDefaults
  • CustomUserAgent上设置WKWebView
  • ApplicationNameForUserAgent上设置WKWebViewConfiguration
  • User-Agent添加NSUrlRequest

1 个答案:

答案 0 :(得分:3)

您应该更改用户代理,例如:

UserDefaults.standard.register(defaults: ["UserAgent" : "Chrome Safari"])