Я начал реализовывать функцию NavigationDelegate в пакете webview_cef. Мне нужно написать некоторый код, который блокирует все URL-адреса, поэтому мне нужна помощь, чтобы сделать это и правильно управлять кодом.
Вот код пакета, который я сделал
https://drive.google.com/file/d/1pFwxTE ... sp=sharing
Я пытаюсь реализовать класс обратного вызова NavigationDelegate и канал метода для взаимодействия с нативным кодом, но не обладаю глубокими знаниями об этом
В моем коде, когда я использую этот код он блокирует все URL-адреса, на которые пользователь может щелкнуть и перенаправить, но я хочу реализовать его как обратный вызов, когда решение dart для конкретного URL-адреса равно предотвратить, URL-адрес должен быть запрещен, а также, если решение navigate< /strong> URL-адрес должен быть перемещаемым
Но использование этого кода, какое бы решение я ни принял, блокирует все URL-адреса, короче говоря, мне нужно управлять этим кодом, чтобы он работал как положено.
Я сделал такие изменения, как указано, и ничего не загружалось, все будет перехвачено, поэтому, пожалуйста, помогите мне правильно управлять кодом.
Если кто-нибудь знает об этом, пожалуйста, помогите мне.
Вот что я для этого сделал:
webview_handler.cc:
bool WebviewHandler::OnBeforeBrowse(CefRefPtr browser,
CefRefPtr frame,
CefRefPtr request,
bool user_gesture,
bool is_redirect) {
CEF_REQUIRE_UI_THREAD();
std::string url = request->GetURL();
// bool shouldAllowNavigation = true;
if (onNavigationRequestEvent) {
std::cout onJavaScriptChannelMessage = nullptr;
m_handler->onFocusedNodeChangeMessage = nullptr;
m_handler->onImeCompositionRangeChangedMessage = nullptr;
m_init = false;
}
void WebviewPlugin::HandleMethodCall(std::string name, WValue* values, std::function result) {
if (name.compare("setNavigationDelegate") == 0) {
int browserId = int(webview_value_get_int(webview_value_get_list_value(values, 0)));
const auto url = webview_value_get_string(webview_value_get_list_value(values, 1));
m_handler->onNavigationRequestEvent(browserId,url);
// setNavigationRequestCallback();
result(1, nullptr); // Respond to Dart
}
// else if (name.compare("setNavigationDelegate") == 0) {
// // Set up navigation delegate
// m_handler->onNavigationRequestEvent = [=](int browserId, std::string url) {
// std::cout
Подробнее здесь: https://stackoverflow.com/questions/789 ... ebview-cef
Нужна помощь по реализации NavigationDelagate в webview_cef ⇐ Linux
-
Anonymous
1726583878
Anonymous
Я начал реализовывать функцию NavigationDelegate в пакете [b]webview_cef[/b]. Мне нужно написать некоторый код, который блокирует все URL-адреса, поэтому мне нужна помощь, чтобы сделать это и правильно управлять кодом.
Вот код пакета, который я сделал
https://drive.google.com/file/d/1pFwxTEO0-Lw-Hf9IW22dCdms_zGNobfZ/view?usp=sharing
Я пытаюсь реализовать класс обратного вызова [b]NavigationDelegate[/b] и канал метода для взаимодействия с нативным кодом, но не обладаю глубокими знаниями об этом
В моем коде, когда я использую этот код он блокирует все URL-адреса, на которые пользователь может щелкнуть и перенаправить, но я хочу реализовать его как обратный вызов, когда решение dart для конкретного URL-адреса равно [b]предотвратить[/b], URL-адрес должен быть запрещен, а также, если решение [b]navigate< /strong> URL-адрес должен быть перемещаемым
Но использование этого кода, какое бы решение я ни принял, блокирует все URL-адреса, короче говоря, мне нужно управлять этим кодом, чтобы он работал как положено.
Я сделал такие изменения, как указано, и ничего не загружалось, все будет перехвачено, поэтому, пожалуйста, помогите мне правильно управлять кодом.
Если кто-нибудь знает об этом, пожалуйста, помогите мне.
Вот что я для этого сделал:
webview_handler.cc:[/b]
bool WebviewHandler::OnBeforeBrowse(CefRefPtr browser,
CefRefPtr frame,
CefRefPtr request,
bool user_gesture,
bool is_redirect) {
CEF_REQUIRE_UI_THREAD();
std::string url = request->GetURL();
// bool shouldAllowNavigation = true;
if (onNavigationRequestEvent) {
std::cout onJavaScriptChannelMessage = nullptr;
m_handler->onFocusedNodeChangeMessage = nullptr;
m_handler->onImeCompositionRangeChangedMessage = nullptr;
m_init = false;
}
void WebviewPlugin::HandleMethodCall(std::string name, WValue* values, std::function result) {
if (name.compare("setNavigationDelegate") == 0) {
int browserId = int(webview_value_get_int(webview_value_get_list_value(values, 0)));
const auto url = webview_value_get_string(webview_value_get_list_value(values, 1));
m_handler->onNavigationRequestEvent(browserId,url);
// setNavigationRequestCallback();
result(1, nullptr); // Respond to Dart
}
// else if (name.compare("setNavigationDelegate") == 0) {
// // Set up navigation delegate
// m_handler->onNavigationRequestEvent = [=](int browserId, std::string url) {
// std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78994568/need-help-to-implement-a-navigationdelagate-in-webview-cef[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия