Заставить WKWebView показать версию для ПК - PullRequest
0 голосов
/ 16 января 2019

У меня есть NSViewController, который отображает различные WKWebView в определенных местах внутри NSView. Если рамка 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 голосов
/ 16 января 2019

Вы должны изменить пользовательский агент, например:

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

...