如何区分用户单击链接和执行自动重定向的页面?

Uwe*_*eim 5 .net c# redirect webbrowser-control winforms

在我的WinForms应用程序中有一个C#WebBrowser控件,并且知道这个Navigating事件,我从来没有想出一个漂亮而优雅的解决方案:

  1. 如果用户主动导航到另一个URL,我想允许它.
  2. 如果页面"自己"重定向到另一个URL,我想取消它.

对于案例1,我可以想到一些案例:

  • 用户单击a标记并href评估属性以加载另一个URL.
  • 用户使用onclickjavascript事件处理程序单击元素,该处理程序调用window.location用于加载另一个URL 的函数.

对于案例2,我可以想象:

  • 加载的页面包含一个iframe标记,用于在IFrame中加载URL.这会引发Navigating事件.
  • 有一些JavaScript计时器在页面加载时启动,当它触发时,它用于window.location加载另一个URL.
  • 加载的页面包含一个meta refresh标题标记,可在几秒钟后加载另一个URL.

所以我的问题是:

如何在Navigating事件(或任何其他机制)内部检测重定向是由用户显式触发还是由页面隐式触发?

更多信息

  • WebBrowser被一个基于Windows的CMS后台应用程序中使用.
  • 因此,我可以完全控制WebBrowser控件中加载的内容.
  • 这意味着如果需要,我可以在发送到浏览器之前操作完整的HTML字符串.
  • 如果它更适用,我也很乐意获得只能使用JavaScript的解决方案,我可以将其注入正在加载的HTML中.

(请注意,我相信这不是此SO帖子的副本)

小智 1

我对此的看法是捕获用户对网络浏览器控件的点击。设置一个标志来指示用户单击了 Web 浏览器。如果该标志为真,则允许重定向,如果不是真则不允许。如果没有(或之后)进行重定向,请确保在 n 秒后重置标志。