gpt4 book ai didi

c# - 在 WebView (WinRT) 的外部浏览器中打开链接

转载 作者:可可西里 更新时间:2023-11-01 08:32:29 26 4
gpt4 key购买 nike

我有一个 WebView 组件,用于在我的应用程序中显示 HTML 广告。当用户在 WebView 中单击广告时,我想在外部浏览器中打开广告链接。我该怎么做?

我需要 WP7 浏览器中的 OnNavigating 之类的东西。我尝试了 WebView 的 Tapped 事件,但即使我设置了 IsTapEnabled=true,它也从未被调用。我需要类似的东西

最佳答案

您需要为此使用 ScriptNotify 事件。下面是我处理该场景的方式(使用 NavigateToString)。如果您从 URL 检索 Web View 内容,则需要能够修改 HTML 才能使其正常工作。

  1. 将以下 Javascript 代码添加到您的 HTML

    <script type="text/javascript">for (var i = 0; i < document.links.length; i++) { document.links[i].onclick = function() { window.external.notify('LaunchLink:' + this.href); return false; } }</script>

    这会为页面上的每个链接 () 添加一个 onclick 处理程序。 window.external.notify 是一种在 Webview 中运行的 Javascript 方法。

  2. 将 ScriptNotify 事件处理程序添加到 webview。

    WebView.ScriptNotify += WebView_ScriptNotify;
  3. 声明事件处理器

    async private void WebView_ScriptNotify(object sender, NotifyEventArgs e)
    {
    try
    {
    string data = e.Value;
    if (data.ToLower().StartsWith("launchlink:"))
    {
    await Launcher.LaunchUriAsync(new Uri(data.Substring("launchlink:".Length), UriKind.Absolute));
    }
    }
    catch (Exception)
    {
    // Could not build a proper Uri. Abandon.
    }
    }

请注意,如果您使用的是外部 URL,则必须将其添加到 webview 允许的 Uris 白名单中(http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.scriptnotify 供引用)。

关于c# - 在 WebView (WinRT) 的外部浏览器中打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com