Название: Как подменить HTML в QWebEngiveView Отправлено: andbiller от Апрель 21, 2015, 20:12 Добрый день. Нужно выключить звук в Qt5 QWebEngineView, в котором пользователь может загружать разные страници. Вижу два пути как это можно сделать:
1) Выполнить JS в уже загруженной странице и задать .muted=true для всех тегов video, но судя по этому линку:https://wiki.qt.io/QtWebEnginePortingFromQtWebKit (https://wiki.qt.io/QtWebEnginePortingFromQtWebKit) , функция runJavaScript может выполняться только в главном фрейме, то есть если на странице будут ифреймы, то звук из них все равно будет поступать. 2) Каким-то образом пропускать весь html поступающий в QWebEngineView через функцию-фильтр, которая будет добавлять атрибут muted в видео (выполнять реплей по регекспу). Но как установить перехватчик? Реально ли это вообще? ПС: В вебките тоже ни как не мог решить эту задачу. Хотя там еще все было синхронно и поддерживался QNetworkAccessManager, на котором (если я правильно понял?) можно было реализовать функцию-фильтр. Хотя я не додумался как это сделать и примеров не нашел. Есть еще один вариант, но он какой-то совсем печальный: скачивать страничку посылая get запрос вручную, потом фильтровать хтмл и делать setHtml. Но тут во-первых, если страница будет содержать JS, который сам будет подгружать видео или даже тот же ифреим - опять проблемы со звуком, во-вторых хотелось бы все-таки отправлять на сайты нормальные браузеро-подобные хедеры. Есть ли у кого-то какие-то идеи? Неужели это вообще ни как нельзя реализовать? Возможно в Chromium движке есть какие-то встроенные возможности управления звуком? Или вообще можно как-то просто полностью выключить звук для приложения? Но не думаю что это будет переносимо даже между разными виндами, а нужна поддержка и линухи. Спасибо за то что прочитали вопрос. |