拥有 C# WebBrowser
control在我的 WinForms 应用程序中,并意识到 Navigating
event , 我从来没有想出一个很好的优雅的解决方案来解决以下问题:
- 如果用户主动导航到另一个 URL,我想允许它。
- 如果页面“自行”重定向到另一个 URL,我想取消它。
对于情况1,我能想到的有以下几种情况:
- 用户点击一个
a
标签,然后评估href
属性以加载另一个 URL。 - 用户单击带有
onclick
javascript 事件处理程序的元素,该事件处理程序调用使用window.location
加载另一个 URL 的函数。
对于情况2我可以想象:
- 加载的页面包含一个
iframe
标记,用于在 IFrame 中加载一个 URL。这会触发Navigating
事件。 - 有一些 JavaScript 计时器在页面加载时启动,当它触发时,它使用
window.location
加载另一个 URL。 - 加载的页面包含
meta refresh
header tag几秒钟后加载另一个 URL。
所以我的问题是:
如何在 Navigating
事件(或任何其他机制)中检测重定向是由用户显式触发还是由页面隐式触发?
更多信息
WebBrowser
正在基于 Windows 的 CMS 后端应用程序中使用。- 因此,我可以完全控制 WebBrowser 控件中加载的内容。
- 这意味着如果需要,我可以在发送到浏览器之前处理完整的 HTML 字符串。
- 如果它更适用,我也很想获得纯 JavaScript 的解决方案,我可以将其注入(inject)到正在加载的 HTML 中。
(请注意,我相信这不是 this SO posting 的副本)
最佳答案
我对此的看法是捕获用户对网络浏览器控件的点击。让它设置一个标志,指示用户单击了网络浏览器。如果标志为真,则允许重定向,如果不为真,则不允许。如果没有(或之后)进行重定向,请确保在 n 秒后重置标志。
关于c# - 如何区分用户点击链接和页面自动重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050548/