在我的 WinForms 应用程序中有一个 C#WebBrowser
控件,并且知道Navigating
事件,我从来没有想出一个好的和优雅的解决方案来解决以下问题:
- 如果用户主动导航到另一个 URL,我想允许它。
- 如果页面“自行”重定向到另一个 URL,我想取消它。
对于案例1,我可以想到一些案例:
- 用户单击一个
a
标签并href
评估该属性以加载另一个 URL。 - 用户单击带有
onclick
javascript 事件处理程序的元素,该事件处理程序调用window.location
用于加载另一个 URL 的函数。
对于案例 2,我可以想象:
- 加载的页面包含一个
iframe
在 IFrame 中加载 URL 的标记。这会触发Navigating
事件。 - 有一些 JavaScript 计时器在页面加载时启动,当它触发时,它用于
window.location
加载另一个 URL。 - 加载的页面包含一个
meta refresh
标题标签,用于在几秒钟后加载另一个 URL。
所以我的问题是:
如何在Navigating
事件(或任何其他机制)内部检测重定向是由用户显式触发还是由页面隐式触发?
更多信息
WebBrowser
正在基于 Windows 的 CMS 后端应用程序中使用。- 因此,我可以完全控制 WebBrowser 控件中加载的内容。
- 这意味着如果需要,我可以在发送到浏览器之前操作完整的 HTML 字符串。
- 如果它更适用,我也很想获得可以注入到正在加载的 HTML 中的纯 JavaScript 解决方案。
(请注意,我相信这不是此 SO 帖子的副本)