Avatar billede peterd Nybegynder
02. marts 2005 - 09:41 Der er 5 kommentarer

tWebBrowser: hvordan ændre HTML-indholdet

Hej eksperter

Jeg ville gerne kunne ændre i en webbrowsers indhold.
Er det muligt?

Følgende virker ikke:

var
  doc:variant;
  s:string;
.
.

  doc:=form1.webbrowser1.Document;
  s:=Doc.body.InnerHTML;
  s:=stringReplace(s,'gammel tekst','ny tekst' ,[rfReplaceAll]);
  Doc.body.InnerHTML:=s;



På følgende link indsættes ren HTML i en webbrowser, men det er ikke lige det jeg har brug for. Så forsinder alle billeder mv.
Jeg har brug for at kunne ændre i den eksisterende HTML.
http://www.swissdelphicenter.ch/torry/showcode.php?id=1096

Er der nogen der kan hjælpe?
Avatar billede vallemanden Nybegynder
02. marts 2005 - 10:07 #1
Er det en slags webeditor du vil lave?
Avatar billede peterd Nybegynder
02. marts 2005 - 12:00 #2
Nej, det er bare fordi jeg vil gemme nogle hjemmesider på min harddisk, så jeg kan bruge dem når jeg ikke er på internettet. Når jeg klikker på links'ene, så skal den læse filerne ind fra harddisken i stedet for at forsøge at finde dem på nettet. Derfor skal jeg ændre de steder i HTML-koden hvor der står <a href=...
og herefter gemme twebbrowseren som en MHT-fil.
Det er måske nok en smartere måde at gøre det på?
Avatar billede stoney Nybegynder
02. marts 2005 - 12:37 #3
Hvis du vil lave en .mht fil

http://www.delphi3000.com/articles/article_3991.asp

Stoney
Avatar billede peterd Nybegynder
02. marts 2005 - 13:04 #4
Jeg kan godt finde ud af at gemme MHT-filerne, men problemet er at jeg gerne vil ændre siden i tWebbrowseren, før jeg gemmer den.
Avatar billede dkn Nybegynder
03. marts 2005 - 15:10 #5
der er en del måder at gøre det på.

uses
  ActiveX;

procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
  Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(0, 0);
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WB_LoadHTML(WebBrowser1,'SwissDelphiCenter');
end;




Men hvis du skal ændre links vil jeg tro at denne funktion kan ændres til alle links istedet:

procedure TForm1.Button1Click(Sender: TObject);
var
  li: Word;
begin
  // Loop through all images of a TWebbrowser

  for li := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
    // Exchange image with an own image
    WebBrowser1.OleObject.Document.Images.Item(0).Src := 'c:\MyImage.gif';
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester