У меня есть Internet Explorer BHO (в c # .net), и я хочу определить, когда пользователь инициирует навигацию или когда навигация, инициированная пользователем, завершена. Под пользовательской инициативой я имею в виду нажатие на ссылку или подобное действие. В частности, если в загружаемом документе есть несколько фреймов, я хочу рассматривать их как единую «навигацию», но я не могу придумать простого способа сделать это. Я знаю события BeforeNavigate2 и DocumentComplete, но не вижу способа различить срабатывание BeforeNavigate / DocumentComplete, когда пользователь нажимает на ссылку, и срабатывание из-за загрузки фрейма.
Одним из возможных решений, которое я думаю, является то, что BeforeNavigate2 для верхнего фрейма всегда запускается раньше, чем для внутренних фреймов (очевидно), а затем DocumentComplete дочерних фреймов вызывается до DocumentComplete верхнего, что всегда называется последним. Так, например, я мог бы увеличить счетчик в BeforeNavigates и уменьшить его в DocumentComplete, и только когда он равен 0, это пользовательская навигация.
Но я не уверен, могу ли я положиться на это или есть лучший способ сделать это. например Что произойдет, если пользователь нажимает ESC после завершения загрузки одного из фреймов, но не всех ли когда-либо вызывается DocumentComplete верхнего фрейма?
Есть предложения?