动态修改浏览器中地网页页面具体内容
想实现动态地监视当前页面中地具体内容,假如具体内容符合条件就动态地替换掉,例如:
网页页面中有1张来自CSDN地图片,俺要将它替换成1段文本。
奈何俺这方面的实力较差,才刚起步,不知道各位大大能否给俺一个例子之类的,先感谢下,听人家说,重新解析APP什么的可以,但是不知道怎么整
[解决办法]
执行javascript
[解决办法]
执行
javascript:document.body.contentEditable= 'true '; document.designMode= 'on '; void 0
任意编辑网页
再执行
javascript:document.body.contentEditable= 'false '; document.designMode= 'off '; void 0
保存编辑好的页面。。。。你试试就知道了。IE里
[解决办法]
看到你的留言了,目前正向学习这方面的东西,代码是没有了不过思路有1个
1 delphi里面有个webbrowser,可以加载网页,同时,你可以更改他加载到的数据
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
[解决办法]
可以嘗試用delphi webbrowser組件或IHTMLDocument2加載其頁面,然後用javascript然取出值,然後再動態修改回去。。。
unit Unit1;interfaceuses 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.
[解决办法]
可插入异步协议(APP)应该可以,但是网上的示例都是C++的,而且只作用于一台计算机。如果你做解决方案的话,这个没什么用。一般的做法都是在网关级别就换掉了,到客户机器的时候已经是处理好的了。
[解决办法]
var
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;
如此即可!
[解决办法]