как корректно заменить стиль css в webbrowser-e? вроде сделал все по науке,
Код |
procedure tform1.loadForum; var flags: OleVariant; begin flags := 0; webbrowser1.Navigate('http://vorota.de/Forum.AxCMS', flags); updatestyle; end;
procedure tform1.updateStyle2(s: string); var s2: string; begin if (not checkbox1.Checked) or (not fileexists('c:\my.css')) then exit; s2 := 'file:///' + 'c:/my.css'; if (pos('http://vorota.de/', s) > 0) then if (webbrowser1.Document <> nil) then webbrowser1.OleObject.Document.styleSheets.Item(0).href := s2; end;
procedure tform1.updateStyle; var s2: string; begin if (not checkbox1.Checked) or (not fileexists(currdir + 'c:\my.css')) then exit; s2 := 'file:///' + 'c:/my.css'; if webbrowser1.Document <> nil then webbrowser1.OleObject.Document.styleSheets.Item(0).href := s2; end;
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin updatestyle2(url); end;
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin updatestyle2(url); end;
procedure TForm1.FormCreate(Sender: TObject); begin loadforum; end;
|
при открытии страницы http://tinyurl.com/5ktppx лезет ошибка "недопустимый (недействительный) аргумент".
при выполнении ф-ции UpdateStyle в событии BeforeNavigate2 (без проверки урла) идет все быстро и стиль меняется нормально, но только пока нет перехода на другую страницу. при переходе лезут ошибки (оно и понятно). при выполнении ф-ции UpdateStyle2 (с проверкой урла) вылазит старый стиль на короткое время (что есть плохо), однако ошибок на чужих страницах нет.
как сделать чтобы и проверка урла была, и старый стиль при этом не вылазил |