webbrowser iframe 在默认浏览器中打开

2023-12-23

我有 WebBrowser 控件可以在默认浏览器中打开链接,如下所示:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        if (e.Url.ToString() != "about:blank")
        {
            e.Cancel = true;
            System.Diagnostics.Process.Start(e.Url.ToString());
        }
    }

这很好用,但如果我加载一个包含一些 IFrame 元素的文档,这些元素也会在系统浏览器中打开(主要是嵌入式内容,如 Google 地图、Digg 图标等)。

如何保持 iframe 在 Webbrowser 控件中加载以及用户在系统浏览器中单击的链接?


我得出的结论是.NET WebBrowser 组件在这方面几乎没有用处。我尝试过阅读WebBrowserNavigatingEventArgs.TargetFrameName但它会返回name仅当 HTML 文档具有 iframe 元素的属性时。不然会吐出一个空的""细绳。在非框架链接上返回 null 会更有用。

因此,我找到的唯一修复方法是使用 AxWebBrowser 控件,并专门监听 BeforeNavigate2 事件。我没有进行尽可能多的测试,但似乎“flags”属性DWebBrowserEvents2_BeforeNavigate2Event被设定为64每次用户触发时。

private void axWebBrowser1_BeforeNavigate2(object sender, AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2Event e)
{
    // 64 means user triggered
    if ((int)e.flags == 64 && e.uRL.ToString() != "about:blank")
    {
        e.cancel = true;
        System.Diagnostics.Process.Start(e.uRL.ToString());
    }
}

MSDN 文档说flags是一个仅 IE7+ 的参数,所以我不知道在 IE6 机器上会发生什么......

使用 .NET 中的 Internet Explorer http://www.webtropy.com/articles/InternetExplorer.asp有一些关于 AxWebBrowser 的非常有价值的信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webbrowser iframe 在默认浏览器中打开 的相关文章

随机推荐

  • 如何用webpack+react渲染图像?

    我对 React 和 Webpack 还很陌生 我遇到了这个我不明白的奇怪问题 问题 当我检查图像时 上面是我看到的 显然没有显示我的图像 我正在使用文件加载器 我的结构 网页包 const path require path const
  • R 中 KerasR LSTM 的数组转换

    为了在 KerasR 中使用 LSTM 我必须转换我的 NumericMatrix 335 x 1515 我想我在这里找到了解决方案https stats stackexchange com questions 274478 underst
  • rgl.snapshot() 不再有效

    我刚刚将 R 和 rgl 升级到以下版本 现在 rgl snapshot 不再起作用 它在以前的版本中有效 有没有解决的办法 R版本2 12 1 2010 12 16 rgl 版本 0 92 798 gt library rgl gt x
  • 从Dictionary中高效获取IReadOnlyDictionary

    public class Flea Animals var fleas new Dictionary
  • 是否可以使用 Nokogiri 解析样式表?

    我花了两个小时在谷歌上搜索这个问题 但找不到任何好的答案 所以让我们看看人类是否可以击败谷歌计算机 我想用 Ruby 解析样式表 以便可以将这些样式应用到文档中的元素 使样式内联 所以 我想采取类似的东西 并能够将其提取到某种 Nokogi
  • json.net - 如何仅在根对象上添加属性 $type

    我想修改我的 json NET 序列化器 以仅将 type 属性添加到实现给定接口的对象 而不添加到任何属性或嵌套对象 使用 TypeNameHandling Auto 默认 PropertyA 123 PropertyB foo Prop
  • Netty closeFuture().sync().channel();块休息 API

    我正在学习 Netty 并开始使用 Spring Boot 一些教程 我的目标是创建一个应用程序 该应用程序设置一个 TCP 端口来接收消息并通过 REST API 呈现它们 大多数教程都说我应该添加这样的东西 serverChannel
  • 如何将 VoiceOver 辅助功能添加到应用程序的图标徽章编号?

    问题 如何添加自定义 VoiceOver 辅助功能Label or Hint到应用程序 图标徽章编号 例如 当iOS设置Accessibility gt VoiceOver被转动On VoiceOver 会大声朗读屏幕上触摸的项 目 对于
  • PE文件如何映射到内存中?

    这几天我一直在研究PE格式 还有几个问题 数据部分是否被映射到进程的内存中 或者程序是否从磁盘中读取它 如果它确实被映射到内存中 那么进程如何获取该部分的偏移量 以及其他部分 有没有什么方法可以获取已映射到内存中的进程的入口点 而不触及磁盘
  • Excel 的 VBA 代码。如何在单独的工作表中创建图表?

    我有一个关于如何使用 vba 代码自动创建绘图 图表 的问题 我可以有一个包含两种列的 Excel 文档 可分为 6 列或可分为 7 列 前两张图片代表我如何接收 Excel 文档 我要做的是 Step 1 复制 A 列并将其放在每组 6
  • 为什么 Dragstart 中的 event.preventDefault() 会中断进一步的拖动事件的执行?

    我正在尝试拖动图像 并且为了停止浏览器的默认图像拖动 我正在使用 event preventDefault 但由于某种原因 它会中断其他事件的执行 例如dragenter dragover dragend等 为什么会这样以及如何在不中断正常
  • 小于与。等于 C/C++ 效率

    当我使用旧的 API 时 例如 Unix 上的 C 套接字 API 我总是注意到人们喜欢小于 lt 大于等于 在比较它们的错误返回值时 int result send if result lt 0 perror 在我提到的情况下 返回码只能
  • Web api 控制器方法在序列化 Stream 对象时出现异常

    我有一个 web api 控制器方法如下 HttpPost public string PostMethod int id Stream downloadStream Service downloadStream id JavaScript
  • 如何在 asp.net web api 中启用 cors 选项?

    如何启用 CORS 选项asp net网络API 我安装了这个包Microsoft AspNet WebApi Cors来自 nuget 的 CORS 支持 但是 我收到一条错误消息 指出IAppBuilder不包含定义app useCor
  • 使用 python 字典理解进行重构

    我有 2 个字典 其中包含相同的键 但值对不同 让我们让 dictA 和 dictB 代表相关的两个字典 dictA key1 Joe key2 Bob dictB key1 Smith key2 Johnson 目前 我正在通过嵌套 if
  • 如何获取数组包含特定值的子项

    我有一个数据库方案 其本质上是相同的文档 https firebase google com docs database ios structure data fanout An index to track Ada s membershi
  • 在画布上图像的不透明部分周围绘制边框

    我正在使用以下方法在画布上绘制图像drawImage 它是一个被透明像素包围的 PNG 如下所示 如何向画布上该图像的可见部分添加纯色边框 澄清一下 我不想要一个围绕图像边界框的矩形 边界应该围绕草地 我确实考虑过使用阴影 但我并不真正想要
  • 当不带句点的链接方法调用时“不接受参数”

    我有一堂课 class Greeter def hi print hi this def hello print hello this def and this 我想致电new Greeter hi and hello as new Gre
  • npm 发布到 Artifactory 不起作用

    我已经根据此处给出的说明设置了 Artifactory http www jfrog com confluence display RTF Npm Repositories http www jfrog com confluence dis
  • webbrowser iframe 在默认浏览器中打开

    我有 WebBrowser 控件可以在默认浏览器中打开链接 如下所示 private void webBrowser1 Navigating object sender WebBrowserNavigatingEventArgs e if