我正在制作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
});
}
我从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;
}
不同网站上的广告可能不同,没有一般方案可以删除所有广告。
要删除网站中的广告,需要获取网站内容并找到广告的代码,然后可以注入js代码来隐藏广告。