UWP WebView 广告拦截器
UWP WebView AdBlocker
我正在制作 UWP 应用程序,我使用 WebView 来显示网页内容。内容不是我的,所以我想屏蔽烦人的视频广告。我正在使用下面的函数来放置隐藏横幅的 css 。
如何处理这个任务?我是否应该过滤每个 HTTP 请求,如果它满足某些正则表达式以停止请求?或者我应该阻止执行广告的外部 javascripts 吗? 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
});
}
不同网站的广告可能会有所不同,没有通用的场景可以去除所有的广告。
去除网站广告需要获取网站内容,找到广告代码,然后注入js代码隐藏广告。
我从 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;
}
我正在制作 UWP 应用程序,我使用 WebView 来显示网页内容。内容不是我的,所以我想屏蔽烦人的视频广告。我正在使用下面的函数来放置隐藏横幅的 css 。 如何处理这个任务?我是否应该过滤每个 HTTP 请求,如果它满足某些正则表达式以停止请求?或者我应该阻止执行广告的外部 javascripts 吗? 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
});
}
不同网站的广告可能会有所不同,没有通用的场景可以去除所有的广告。
去除网站广告需要获取网站内容,找到广告代码,然后注入js代码隐藏广告。
我从 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;
}