Цель состоит в том, чтобы использовать CEF как только средство визуализации пользовательского интерфейса, а не как веб-браузер.
Однако я столкнулся с проблемой:
Даже несмотря на то, что я отключил большинство параметров, связанных с браузером, пользователи все равно могут запускать поведение, подобное браузеру, например как:
- → Открытие инструментов разработчика
Код: Выделить всё
Ctrl + Shift + I - → новые пустые всплывающие окна.
Код: Выделить всё
window.open() - щелкните правой кнопкой мыши → контекстное меню по умолчанию.
- наведение ссылки → показывает URL-адрес в строке состояния.
- выбираемый текст, доступ к буферу обмена и т. д.
Код: Выделить всё
settings.windowless_rendering_enabled = true;
settings.command_line_args_disabled = true;
cmd->AppendSwitch("disable-dev-tools");
cmd->AppendSwitch("disable-extensions");
cmd->AppendSwitch("no-sandbox");
cmd->AppendSwitch("disable-popup-blocking");
Код: Выделить всё
MiniClient- → вернуть true
Код: Выделить всё
OnBeforePopup - → блокировать нетекущие вкладки
Код: Выделить всё
OnOpenURLFromTab - → заблокировать Chrome://, devtools://
Код: Выделить всё
OnBeforeBrowse - → set *use_default_window = false
Код: Выделить всё
OnBeforeDevToolsPopup - → return true
Код: Выделить всё
OnChromeCommand(IDC_DEV_TOOLS)
Чего я хочу:
Я хочу, чтобы мой экземпляр CEF вел себя как встроенный пользовательский интерфейс движок (для моей программы запуска игр), совсем не похожий на браузер —
нет инструментов разработчика, нет контекстных меню, нет новых окон, нет щелчка правой кнопкой мыши, нет ярлыков и т. д.
В основном:
«CEF должен вести себя как изолированный WebView – совершенно неинтерактивный за пределами логики пользовательского интерфейса моего приложения».
Что я пробовал:
- Переопределить все обработчики (, CefRequestHandler, CefContextMenuHandler и т. д.)
Код: Выделить всё
CefLifeSpanHandler - Возврат true в OnBeforePopup
- Использование windowInfo.SetAsWindowless(nullptr)
- Отключение всего с помощью OnBeforeCommandLineProcessing
Вопросы:
- Есть ли надежный способ отключить все поведение на уровне браузера (всплывающее окно, DevTools, контекстные меню и т. д.) в CEF 141?
- Могу ли я каким-то образом включить или использовать chrome_runtime, чтобы получить более строгий контроль над созданием всплывающих окон и DevTools?
- Можно ли скомпилировать CEF в настоящем режиме «только для пользовательского интерфейса» (без chrome://, нет возможностей внутреннего браузера)?
Подробнее здесь: https://stackoverflow.com/questions/798 ... om-game-la
Мобильная версия