我有一个 Internet Explorer BHO(在 c# .net 中)并且想要识别用户何时启动导航或用户启动导航何时完成。用户发起我的意思是点击一个链接或类似的动作。特别是如果正在加载的文档中有多个框架,我想将它们视为一个“导航”,但我想不出任何简单的方法来做到这一点。我知道 BeforeNavigate2 和 DocumentComplete 事件,但是看不到任何方法来区分用户单击链接时触发的 BeforeNavigate/DocumentComplete 和由于框架正在加载而触发。
我在想的一种可能的解决方案是,顶部框架的 BeforeNavigate2 总是在内部框架之前被触发(显然),然后子框架的 DocumentComplete 在顶部的 DocumentComplete 之前被调用,它总是最后调用. 因此,例如,我可以在 BeforeNavigates 中增加一个计数器并在 DocumentComplete 中减少它,只有当它为 0 时,它才是用户启动的导航。
但我不确定我是否可以依靠这个,或者是否有更好的方法来做到这一点。例如,如果用户在其中一帧后按下 ESC 但并非所有帧都完成加载会发生什么情况:是否曾调用顶部帧的 DocumentComplete?
有什么建议么?