UWP WebView AdBlocker - PullRequest
       30

UWP WebView AdBlocker

0 голосов
/ 10 мая 2018

Я делаю приложения UWP и использую WebView для отображения содержимого веб-страницы. Контент не мой, поэтому я хотел бы заблокировать надоедливую видео рекламу. Я использую функцию ниже, чтобы поставить CSS, который скрывает баннеры. Как подойти к этой задаче? Должен ли я фильтровать каждый HTTP-запрос, и если он удовлетворяет некоторому регулярному выражению, чтобы остановить запрос? Или я должен заблокировать внешние javascript, которые выполняют рекламу? Об этом есть темы для Android WebView, но я не смог заставить его работать в UWP.

private async void InvokeScript()
{
    string functionString = "let link = document.createElement('link'); link.rel = 
    'stylesheet'; link.type = 'text/css'; link.href = 'ms-appx-web:///MyCss.css'; 

    document.getElementsByTagName('head')[0].appendChild(link);";

    await webView.InvokeScriptAsync("eval", new string[] { functionString 
    });
}

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Я нашел отличное решение на форуме Microsoft.Для UWP WebView FrameNavigationStarting делает свою работу!

webView.FrameNavigationStarting += webView_FrameNavigationStarting;

private void webView_FrameNavigationStarting(object sender, WebViewNavigationStartingEventArgs args)
{
    // Cancel navigation if URL is not allowed. (Implemetation of IsAllowedUri not shown.)
    if (!IsAllowedUri(args.Uri))
        args.Cancel = true;
}
0 голосов
/ 11 мая 2018

Реклама на разных сайтах может быть разной, нет общего сценария удаления всех объявлений.

Чтобы удалить рекламу на сайте, вам нужно получить контент сайта и найти код объявления, затем вы можете ввести код js, чтобы скрыть рекламу.

...