Это что-то вроде клочья, но он работает в моих тестах с использованием стандартного компонента TWebBrowser.
Я переопределил клавишу F5 в событии OnKeyUp
формы. Установив для свойства KeyPreview
формы значение True, вы можете вызвать собственное обновление. Видя, что метод TWebBrowser.Refresh не вызывает каких-либо навигационных событий (как вы сказали в своем вопросе), я сам вызываю событие TWebBrowser.Navigate, которое вызывает события.
Вам нужно сохранить URL, который, я полагаю, вы уже делаете. Но если нет, то в событии BeforeNavigate2
вам дается URL
в качестве параметра. Так что сохраните это в переменной или на экране управления. Затем, когда нажата клавиша F5 (или кнопка «Обновить», если она была отображена на экране), просто перейдите к этому URL-адресу. Все события OnBeforeNavigate2
, OnNavigateComplete2
и OnDocumentComplete
запускаются снова, что дает вам возможность выполнить тест и поместить страницу-заполнитель вместо страницы ошибок IE по умолчанию.
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Edit1.Text := URL;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_F5) then
begin
WebBrowser1.Navigate(Edit1.Text);
end;
end;