因为工作需要,一直在使用TChromium插件展示网页内容。今天遇到一个需求:只展示某个网页(商品购买详情页面)中的商品详情。因为TChromium具有良好的js脚本支持,当时也觉得一定可以实现这个功能。
先看看网页端的源码,我需要只展示 div class = “w1000” 的内容。
我的思路是先遍历网页中所有的div元素,设置其他元素不可见,只留下我需要的div就可以了(包括展示它的父层)。
因为很少接触js的代码,设置div不可见的功能着实费了点功夫,惭愧惭愧。
不过最终被我搞定了,使用以下的js脚本,可完美屏蔽其他不需要的div层,只展示指定的div元素:
var i,a="";
var d=document.getElementsByTagName("div");
for(i=0;i<d.length;i++)
{
if ((d[i].className !=="w1000") && (d[i].className !=="jybodybg"))
{
d[i].style.display="none";
}
}
由TChrome来执行这部分的js脚本,在cmLoadEnd事件中,加入以下代码,ok:
procedure TfrmShow.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
var
jsStr: string;
begin
jsStr := 'var i,a=""; var d=document.getElementsByTagName("div"); '+
'for(i=0;i<d.length;i++)'+
'{'+
'if ((d[i].className !=="w1000") && (d[i].className !=="jybodybg")) '+
'{'+
'd[i].style.display="none"; '+
'}};';
Frame.ExecuteJavaScript(jsStr, '', 0);
end;