想实现动态地监视当前页面中地具体内容,假如具体内容符合条件就动态地替换掉,例如:
网页页面中有1张来自CSDN地图片,俺要将它替换成1段文本。
奈何俺这方面的实力较差,才刚起步,不知道各位大大能否给俺一个例子之类的,先感谢下,听人家说,重新解析APP什么的可以,但是不知道怎么整
网页页面中有1张来自CSDN地图片,俺要将它替换成1段文本。
奈何俺这方面的实力较差,才刚起步,不知道各位大大能否给俺一个例子之类的,先感谢下,听人家说,重新解析APP什么的可以,但是不知道怎么整
解决方案 »
- JCL安装失败,请高手帮忙
- 谁有Delphi项目案例导航的电子书
- 密界高手多多指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 为什么用themeengine控件时候老跳出需要注册的窗口
- 你的登录过于频繁,或者密码受到攻击,为了保证你的密码安全,请在3分钟后再登录!!
- 怎样用最简单的方法实现邮件的群发??
- 事件响应
- KAO!怎么实现delphi中的client/server数据互传?
- 怎樣實現將數據導出到各種文型文件,如Excel,txt,dbf 等?請幫忙
- 请问如何捕获特定异常信息(例如:query.execsql是否执行成功!)?
- 求达人帮忙解决delphi怎样安装在win7上
- win7 D2010 服务程序 TrayIcon 不运行
javascript:document.body.contentEditable='true'; document.designMode='on'; void 0
任意编辑网页再执行
javascript:document.body.contentEditable='false'; document.designMode='off'; void 0
保存编辑好的页面。你试试就知道了。IE里
procedure DoChangePageCode(Doc: IDispatch);
var
tr: IHTMLTxtRange;
s: string;
begin
tr := ((Doc as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
s := tr.htmlText; // 取出页面的代码
// 此处就能随意改了
tr.pasteHTML(s); // 改完后的代码写回去
end;2 如果你需要修改第三方浏览器例如ie,恐怕需要dll注入了,那么学一下钩子以及 textout这个函数吧,因为以前用的不多,你还是请教其他高人吧,这里有个例子,可以参考下
http://apps.hi.baidu.com/share/detail/1973745
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
end;var
Form1: TForm1;implementation{$R *.dfm}uses ComObj;{此函数需要 ComObj 单元的支持}
{参数 JsCode 是要执行的 Js 代码; 参数 JsVar 是要返回的变量}
function RunJs(const JsCode, JsVar: string): string;
var
script: OleVariant;
begin
try
script := CreateOleObject('ScriptControl');
script.Language := 'JavaScript';
script.ExecuteStatement(JsCode);
Result := script.Eval(JsVar);
except
Result := '';
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s := RunJs(Memo1.Text, 'str');
ShowMessage(s);
end;end.
如果是forms里的要怎么写呢
我想要的,也仅仅只是当前电脑而已,delphi下怎么实现呢
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
htmlDoc: IHTMLDocument2;
FirstLink: IHTMLElement;
allLinks: IHTMLElementCollection;
url,urlStr: string;
begin
memo1.Clear;
WebBrowser1.Navigate(Edit1.Text);
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
htmlDoc:= WebBrowser1.Document as IHTMLDocument2;
allLinks:= htmlDoc.all;
i:= allLinks.length;
//ShowMessage(IntToStr(i));
FirstLink:= allLinks.item(1,'') as IHTMLElement;
url:= FirstLink.toString;
urlStr:= FirstLink.innerHTML;
urlStr:= StringReplace(urlStr,'贴吧','QQ',[rfReplaceAll]);
FirstLink.innerHTML:= urlStr;
Memo1.Lines.Add(urlStr);
end;我这样写,可是在FirstLink.innerHTML:= urlStr;会报错,无法设置 innerHTML 属性。 该操作的目标元件无效请问应该如何写呢
源html
str1:=WebBrowser1.oleobject.document.links.item(1).innerhtml;
替換:
str1:=StringReplace(str1,'贴吧','QQ',[rfReplaceAll]);
設置
WebBrowser1.oleobject.document.links.item(1).innerhtml:=str1;
links:variant;
i:integer;
linkstr:string;
begin
links:= wb.oleobject.document.links;
for i:=0 to links.length-1 do begin
linkstr:= links.item(i).innerhtml;
linkstr:=StringReplace(linkstr,'贴吧','QQ',[rfReplaceAll]);
links.item(i).innerhtml := linkstr;
end;
end;
end;如此即可!
如果是页面的部分内容是通过js脚本生成的,一般html内容的替换就不起作用了
需要对js执行后的内容进行替换
<LI id=yui_3_3_0_1_13167698376253849><SPAN id=yui_3_3_0_1_13167698376253848
class=ssq>双色球</SPAN> </LI>
<LI id=yui_3_3_0_1_1316769837625302><SPAN id=yui_3_3_0_1_1316769837625301
class=dlt>大乐透</SPAN> </LI>