破解插件源moveable的源地址

怎样得到有框架的全部页面源代码_百度知道
提问者采纳
用chtmlview打带框架网页写面函数 BOOL CHtmlView::GetFrameSource( IDispatch *pDisp, CString& refString ) {
BOOL bRetVal = FALSE;
HRESULT hr = S_OK;
if ( pDisp != NULL )
CComQIPtr&IWebBrowser2& pBrowser = pD
if ( pBrowser != NULL )
IDispatch *pDispDoc = NULL;
hr = pBrowser-&get_Document(&pDispDoc);
if ( !( FAILED(hr) || !pDisp ) )
CComQIPtr&IPersistStreamInit& pStmInit = pD
if ( !pStmInit )
HGLOBAL hM
hMemory = GlobalAlloc(GMEM_MOVEABLE, 0);
if (hMemory != NULL)
CComQIPtr&IPersistStreamInit& spPSI = pDispD
if( spPSI != NULL)
CComPtr&IStream& spS
if (SUCCEEDED(CreateStreamOnHGlobal(hMemory, TRUE, &spStream)))
spPSI-&Save(spStream, FALSE);
LPCTSTR pstr = (LPCTSTR) GlobalLock(hMemory);
if (pstr != NULL)
// Stream is always ANSI, but CString
// assignment operator will convert implicitly.
bRetVal = TRUE;
refString =
CATCH_ALL(e)
bRetVal = FALSE;
DELETE_EXCEPTION(e);
END_CATCH_ALL
if(bRetVal == FALSE)
GlobalFree(hMemory);
GlobalUnlock(hMemory);
RELEASE(pDispDoc);
return bRetV } 能用DocumentComplete我知道获pDisp像DocumentComplete才能获框架各页pDisp没通用性我想要实现像GetSource功能要网页载完毕任意刻获框架html源文件
提问者评价
也没有人给其他答案,分就给你吧,我用Firefox的插件完成了
发呆ING,完美主义,晒不黑,爱睡觉,囧,外貌协会,听音乐,麦霸,缺爱ING,各种宅
其他类似问题
13人觉得有用
源代码的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁看了本文的网友还看了描述性分类
Discuz! X1.5后台
X-Space系列
来自站长百科
采用模块化结构,每个模块的前后台程序、模板都放在单独得模块目录下,例如:文章模块的目录是news,该目录下包含了文章管理后台(admin)、目录(module)、模板目录 (templates)等,各模块目录名的介绍请参考,本文主要介绍插件开发相关的程序结构。
每个插件由一个插件程序、一个默认模板、一条插件参数数据记录等三个元素构成。以“文章列表”插件为例,说明插件的文件和数据结构。“文章列表”插件程序是存放在news/module/目录中NewsList.php;插件的默认模板是news/templates/目录中的 tpl_newslist.htm;插件记录存放在数据表“_base_plusdefault”中,每个插件一条记录,记录了该插件的参数,其中 pluslable字段的值就是该插件的名,文章列表的pluslable是modNewsList。其中的规则是,pluslable标签名去掉前面的“mod”,就是插件的程序文件名,程序依据此规则找到插件程序并运行。
_base_plus数据表记录了每个页面上插入了那些插件、插件的位置、显示参数等信息
_base_plustemp数据表记录了插件的扩展模板
每个插件在 _base_plusdefault数据表中有一条记录,该记录决定了插件允许插入在哪些页面、有哪些参数可以设置、默认的设置参数是什么等信息。插件参数设置是和插件程序相配合的,设置了哪些可选项目,就要在程序中进行判断并正确体现出来。各字段说明如下:
id     自增量ID,新增插件记录时自动产生,无需特别指定
coltype  插件的来源模块代码(如:news),根据此值寻找插件程序和模板文件的位置
pluslable 唯一的插件标签名,不可重名,和插件程序文件名称对应,如modNewsList
plusname  插件的中文名,考虑到排版时在插件管理面板显示完整,一般不要超过16个字符
plustype  允许在哪些模块使用该插件,all表示该插件可以在全站所有模块使用
pluslocat 允许在哪些页面使用该插件,all表示全部页面;和plustype配合用以规定插件的可用范围
tempname  插件的默认模板文件名(扩展模板则记录在_base_plustemp表中)
插件的默认颜色方案编号。除了导航菜单可选配色方案,其他插件均填-1,即不可选配色方案;程序支持所有插件均可选配色方案,但是这样做将使插件模板开发增加15倍工作量,故暂时只有导航菜单使用了这一机制
showborder 插件默认选用的边框编号。A001代表001号边框模板,配色代号为A(配色编号从A-P共16种颜色,可以填写B001、P001等,但不推荐);1000表示自定义边框,如果插件默认不显示边框,可在此填写1000,并将borderwidth填为0。
bordercolor 自定义边框的颜色,仅在showborder为1000自定义边框时有效 
borderwidth 自定义边框的宽度,仅在showborder为1000自定义边框时有效
borderstyle
边框的样式,solid表示实线,dotted表示点状,dashed表示虚线...
borderlable 用于标签式边框填写被控插件编号,默认记录不要填任何内容
borderroll  用于标签式边框的切换方式,默认记录不要填任何内容
showbar  
自定义边框是否显示插件标题栏,仅在showborder为1000自定义边框时有效
barbg   
自定义边框的标题栏背景色,仅在showborder为 1000自定义边框时有效
barcolor   自定义边框的标题栏文字色,仅在showborder为1000自定义边框时有效
backgroundcolor  自定义边框的背景色,仅在showborder为1000自定义边框时有效
morelink   默认的更多链接,填-1表示不可设置更多链接
width     插件默认的宽度,根据插件的理想显示尺寸填写
height    插件的默认高度,根据插件的理想显示尺寸填写
top      插件的顶边距,是相对于容器的顶边距,一般填0,方便用户在同一位置找到新插入的插件
left     插件的左边距,是相对于容器的左边距,一般填0,
zindex    插件的Z轴位置,一般填写99,使插件插入时位于其他插件的前方
padding    插件边框的内边距,即边框和内容之间的距离
shownums   内容默认显示条数,如不可控制内容条数,填-1
ord      内容的排序参数,根据插件来源数据表可提供排序的参数,以“|”分割,如不允许设置,填-1
sc      内容的排序方法,asc或desc,如不允许设置,填-1
showtj    是否只显示推荐内容,1表示默认选中“只显示推荐内容”,0表示不规定是否显示推荐内容,如果不可设置是否显示推荐内容,填-1
cutword    内容标题截取文字,填数字,不可设置时填-1
target    链接打开方式,_self或_blank,不可设置时填-1
catid     默认选择的分类id,用于选择内容的显示分类。当该值不是-1时,必须在 classtbl字段中填如对应的数据表名,该数据表的结构必须符合PHPWEB的catpath分类方法,如文章、下载分类等均按此标准规划分类。
cutbody    内容截取字数,一般配合程序截取body,memo等字段,不可设置时填-1
picw     缩图宽度,一般用于图片展示等插件,不可设置时填-1
pich     缩图高度,一般用于图片展示等插件,不可设置时填-1
fittype    缩图的默认自适应方法,填 fill或不可设置时填-1
默认的插件标题
body    
在插件设置时可直接输入编辑内容,-1为不可填
pic      在插件设置时可直接上传图片,-1为不可上传图片
在插件设置时可直接上传图片的配套链接,-1为不可填
attach    在插件设置时可直接上传文件,-1为不可上传文件
movi     在插件设置时可填写视频来源网址,-1为不可填
sourceurl   在插件设置时可填写其他来源网址,-1为不可填
word、 word1、word2、word3、word4、text、text1、link、link1、link2、link3、link4
这些字段用于自定义内容模块中的组合内容插件,一般不使用,填-1
用于输入代码,不可输入填-1
为空时可设置匹配标签,-1时不可设置
groupid  用于选择分组,如友情链接、广告组等插件,填-1时不可选择分组
用于选择专题,如文章列表插件,填-1时不可选择专题
预留字段,全部填1
对应catid的分类数据表名
grouptbl 对应groupid的分组数据表名
projtbl  对应projid的专题数据表名
setglobal 是否允许全站同时插入插件,1为可同时插入,0为不可同时插入。注意事项:一般只能允许每页只可插入一个的插件进行全站同时插入,否则会弄乱页面
overflow  内容溢出是是否自动增加高度,对于可预知高度的应设为hidden,不可预知高度得设为visible
插件默认插入的容器,可选填top、content、bottom
预留字段,填1
一个页面中是否允许多次插入本插件,注意插入多个会产生互相冲突的一般应设为0
ifrefresh  插入插件后是否刷新页面,一般带js的插件应设为1,需要刷新后才能看到效果,普通插件设为0
重要提示:插件记录表默认参数的设置属于开发范畴,所设置的参数必须进行对应的程序开发才能体现,非程序开发人员切勿在数据表中随意更改已有插件的参数,否则可能导致程序出错!
在规划好一个插件应该按什么样的规则显示、有哪些参数可以设置后,就可以进行插件程序开发了。插件程序的作用就是按可选参数设置,将内容取出来,交给模板显示内容。接下来以“文章列表”插件为例,说明插件程序的开发方法:
[插件名称] 最新文章列表
[适用范围] 全站
function NewsList(){ #插件程序文件名和插件函数同名
global $fsql,$  #全局[[数据库]]连接类
$coltitle=$GLOBALS[&PLUSVARS&][&coltitle&];
$shownums=$GLOBALS[&PLUSVARS&][&shownums&];
$ord=$GLOBALS[&PLUSVARS&][&ord&];
$sc=$GLOBALS[&PLUSVARS&][&sc&];
$showtj=$GLOBALS[&PLUSVARS&][&showtj&];
$cutword=$GLOBALS[&PLUSVARS&][&cutword&];
$cutbody=$GLOBALS[&PLUSVARS&][&cutbody&];
$target=$GLOBALS[&PLUSVARS&][&target&];
$catid=$GLOBALS[&PLUSVARS&][&catid&];
$projid=$GLOBALS[&PLUSVARS&][&projid&];
$tags=$GLOBALS[&PLUSVARS&][&tags&];
$pagename=$GLOBALS[&PLUSVARS&][&pagename&];
$tempname=$GLOBALS[&PLUSVARS&][&tempname&];
# 以上读入插件设置参数,在插件记录表中允许设置的项目,必须将设置参数读入,在程序中对参数进行判断;在插件记录表中设置为-1的字段,绝对不要在这里引入
或判断。这是因为当记录值为-1时,插件设置窗口将不显示该参数的设置,用户看不到,但程序一旦解释了,该值就是-1,会使运行结果和预期的不一样。
//地址栏参数
if($pagename==&query& && strstr($_SERVER[&QUERY_STRING&],&.html&)){
$Arr=explode(&.html&,$_SERVER[&QUERY_STRING&]);
$nowcatid=$Arr[0];
}elseif($_GET[&catid&]&0){
$nowcatid=$_GET[&catid&];
$nowcatid=0;
  #文章列表插件中根据插件插入的不同地方,判断当前页面的分类id,以求根据页面自动显示当前分类下的文章。
#默认查询条件
$scl=& iffb='1' and catid!='0' &;
#如果插件设置了只显示推荐,则只取tj=1的数据
if($showtj!=&& && $showtj!=&0&){
$scl.=& and tj='1' &;
#显示分类规则:如果插件设置时未指定分类,则显示当前所在分类,否则不限分类
if($catid!=0 && $catid!=&&){
$catid=fmpath($catid);
$scl.=& and catpath regexp '$catid' &;
}elseif($nowcatid!=0 && $nowcatid!=&&){
$catid=fmpath($nowcatid);
$scl.=& and catpath regexp '$nowcatid' &;
#匹配专题,如果插件设置中选择了只显示某个专题的文章,则只获取匹配某专题的数据
if($projid!=0 && $projid!=&&){
$projid=fmpath($projid);
$scl.=& and proj regexp '$projid' &;
#判断匹配标签,如果插件设置中填写了匹配标签,只获取匹配的记录
if($tags!=&&){
$tags=$tags.&,&;
$scl.=& and tags regexp '$tags' &;
#模版解释,读入插件模板,将插件模板中的代码按&!- -&标签进行分离,存入数组
#例如&!-start-& 和&!-start-&之间的内容,就是$TempArr[&start&],依此类推
$Temp=LoadTemp($tempname);
$TempArr=SplitTblTemp($Temp);
#首先将模板的start部分需要的显示的变量替换给模板
$var=array(
'coltitle' =& $coltitle,
'morelink' =& $morelink
$str=ShowTplTemp($TempArr[&start&],$var);
#开始循环,按条件取出文章
$picnum=1;
$fsql-&query(&select * from pw_news_con where $scl order by $ord $sc limit 0,$shownums&);
while($fsql-&next_record()){
$id=$fsql-&f('id');
$title=$fsql-&f('title');
$catpath=$fsql-&f('catpath');
$dtime=$fsql-&f('dtime');
$nowcatid=$fsql-&f('catid');
$ifnew=$fsql-&f('ifnew');
$ifred=$fsql-&f('ifred');
$ifbold=$fsql-&f('ifbold');
$author=$fsql-&f('author');
$source=$fsql-&f('source');
$cl=$fsql-&f('cl');
$src=$fsql-&f('src');
$cl=$fsql-&f('cl');
$fileurl=$fsql-&f('fileurl');
$downcount=$fsql-&f('downcount');
$prop1=$fsql-&f('prop1');
$prop2=$fsql-&f('prop2');
$prop3=$fsql-&f('prop3');
$prop4=$fsql-&f('prop4');
$prop5=$fsql-&f('prop5');
$prop6=$fsql-&f('prop6');
$prop7=$fsql-&f('prop7');
$prop8=$fsql-&f('prop8');
$prop9=$fsql-&f('prop9');
$prop10=$fsql-&f('prop10');
$prop11=$fsql-&f('prop11');
$prop12=$fsql-&f('prop12');
$prop13=$fsql-&f('prop13');
$prop14=$fsql-&f('prop14');
$prop15=$fsql-&f('prop15');
$prop16=$fsql-&f('prop16');
$prop17=$fsql-&f('prop17');
$prop18=$fsql-&f('prop18');
$prop19=$fsql-&f('prop19');
$prop20=$fsql-&f('prop20');
$memo=$fsql-&f('memo');
$mid=$fsql-&f('memberid');
#对取出的数据进行一系列判断,取出在该插件中可能被显示的数据
if($mid&0){
$memberurl=ROOTPATH.&member/home.php?mid=&.$
$memberurl=&#&;
if($GLOBALS[&CONF&][&CatchOpen&]==&1& && file_exists(ROOTPATH.&news/html/&.$id.&.html&)){
$link=ROOTPATH.&news/html/&.$id.&.html&;
$link=ROOTPATH.&news/html/?&.$id.&.html&;
$dtime=date(&m/d&,$dtime);
if($ifbold==&1&){$bold=& style='font-weight:bold' &;}else{$bold=&&;}
if($ifred!=&0&){$red=& style='color:&.$ifred.&' &;}else{$red=&&;}
if($cutword!=&0&){$title=csubstr($title,0,$cutword);}
if($cutbody!=&0&){$memo=csubstr($memo,0,$cutbody);}
if($src==&&){$src=&news/pics/nopic.gif&;}
$src=ROOTPATH.$
$downurl=ROOTPATH.&news/download.php?id=&.$
//显示所属分类
$msql-&query(&select cat from pw_news_cat where catid='$nowcatid'&);
if($msql-&next_record()){
$cat=$msql-&f('cat');
$msql-&query(&select * from pw_news_prop where catid='$nowcatid' order by xuhao&);
while($msql-&next_record()){
$pn=&propname&.$i;
$$pn=$msql-&f('propname');
 #模版标签解释,将数据解释给模板
$var=array (
'title' =& $title,
'memo' =& $memo,
'dtime' =& $dtime,
'red' =& $red,
'bold' =& $bold,
'link' =& $link,
'target' =& $target,
'author' =& $author,
'source' =& $source,
'cat' =& $cat,
'src' =& $src,
'cl' =& $cl,
'memberurl' =& $memberurl,
'picnum' =& $picnum,
'downurl' =& $downurl,
'fileurl' =& $fileurl,
'downcount' =& $downcount,
'prop1' =& $prop1,
'prop2' =& $prop2,
'prop3' =& $prop3,
'prop4' =& $prop4,
'prop5' =& $prop5,
'prop6' =& $prop6,
'prop7' =& $prop7,
'prop8' =& $prop8,
'prop9' =& $prop9,
'prop10' =& $prop10,
'prop11' =& $prop11,
'prop12' =& $prop12,
'prop13' =& $prop13,
'prop14' =& $prop14,
'prop15' =& $prop15,
'prop16' =& $prop16,
'prop17' =& $prop17,
'prop18' =& $prop18,
'prop19' =& $prop19,
'prop20' =& $prop20,
'propname1' =& $propname1,
'propname2' =& $propname2,
'propname3' =& $propname3,
'propname4' =& $propname4,
'propname5' =& $propname5,
'propname6' =& $propname6,
'propname7' =& $propname7,
'propname8' =& $propname8,
'propname9' =& $propname9,
'propname10' =& $propname10,
'propname11' =& $propname11,
'propname12' =& $propname12,
'propname13' =& $propname13,
'propname14' =& $propname14,
'propname15' =& $propname15,
'propname16' =& $propname16,
'propname17' =& $propname17,
'propname18' =& $propname18,
'propname19' =& $propname19,
'propname20' =& $propname20
$str.=ShowTplTemp($TempArr[&list&],$var);
$picnum++;
#循环结束,将模板的结尾部分,即&!-end-&标签之间的内容加入$str,最后返回$str,$str的内容将被完整显示。
$str.=$TempArr[&end&];
以“文章列表”插件的默认模板tpl_newslist.htm为例,源码如下:
&!-start-&
&link href=&css/newslist.css& rel=&stylesheet& type=&text/css& /&
&ul class=&newslist&&
&!-start-&
&li class=&newslist&&&a href=&{ # link # }& target=&{ # target # }& class=&newslist& { # bold # } { # red # } &{ # title # }&/a&&/li&
插件模板一般具有开始部分、循环部分、结束部分,可根据显示的需要,将内容放在合适的位置。如果插件中需要进行多个循环,或加入其它内容,除了这些标签外,还可以使用以下标签:
&!-m1-&&!-m1-&
&!-m2-&&!-m2-&
&!-m3-&&!-m3-&
&!-menu-&&!-menu-&
&!-text-&&!-text-&
&!-rowstart-&&!-rowstart-&
&!-rowend-&&!-rowend-&
&!-con-&&!-con-&
实际上,标签的作用是让程序把其中的内容加入到数组元素中,而循环是在程序中进行的。例如&!-menu-&&!-menu-&之间的内容在被加入到数组后就是$TempArr["menu"],在程序中可以将其中的内容进行判断,输出需要的数据。
文章列表插件是所有插件中设置参数最多,也是比较复杂的插件。学习插件开发,可以从简单的开始。比如可以尝试只从中取出一条数据,通过插件+将其显示出来,然后逐步深入研究插件开发。也可以通过研究学习现有的插件,通过修改现有插件来逐步熟悉插件的开发。
如果希望发布自己制作的插件,建议你给插件的命名带有自己的英文网名,以避免插件重名。例如你自己制作的特色文章列表插件,可以是 MyNameNewsList.php,pluslable是modMyNameNewsList.。
插件打包时应按原来的文件结构,从模块目录开始,按实际目录存放文件,方便用户了解文件的上传位置。还要在后台“模块插件设置”中,将此插件的记录导出为.dat文件,一起打包。
初次制作插件资源包,建议先自己测试一次插件安装过程,以保证插件资源包的正确。jQuery.fn.drag=function(){
var moveAble=
var that=$(this);
var _top=0;
var _left=0;
$(document).bind(&mousemove&,function(e){
if(moveAble){
that.css({&left&:e.pageX-_left,&top&:e.pageY-_top});
$(this).mousedown(function(e){
_top=e.pageY-Number(that.css(&top&).replace(&px&,&&));
_left=e.pageX-Number(that.css(&left&).replace(&px&,&&));
$(document).mouseup(function(){
代码有点乱,而且没优化过,不过今天主要是说一下插件开发,这些先不理。。。
jquery插件无非是在jquery命名空间上添加对每个jquery实例有效方法和属性
基本上都是套用这种模式:
/*向jquery里面添加drag方法*/
jQuery.fn.drag
于是我就可以使用了(这是一个简易的拖动元素的插件)
$(&.XX&).drag();有些插件是可以带参数或者不带
例如(时间不足,网上找了一个):
jQuery.fn.quberTip = function (options) {
var defaults = {
speed: 500,
xOffset: 10,
yOffset: 10
var options = $.extend(defaults, options);
return this.each(function () {
var $this = jQuery(this);
if ($this.attr('title') != undefined) {
//Pass the title to a variable and then remove it from DOM
if ($this.attr('title') != '') {
var tipTitle = ($this.attr('title'));
var tipTitle = 'Null';
//Remove title attribute
$this.removeAttr('title');
$(this).hover(function (e) {
$(this).css('cursor', 'pointer');
$(&body&).append(&&div id='tooltip'&& + tipTitle + &&/div&&);
$(&#tooltip&).css({ &position&: &absolute&,
&z-index&: &9999&,
&background&: &#D3DDF5&,
&padding&: &5px&,
&opacity&: &1&,
&border&: &1px solid #A3C0E8&,
&font-weight&: &bold&,
&font-size&: &12px&,
&display&: &none&,
&max-width&:&300px&
$(&#tooltip&)
.css(&top&, (e.pageY + defaults.xOffset) + &px&)
.css(&left&, (e.pageX + defaults.yOffset) + &px&)
.fadeIn(options.speed);
}, function () {
//Remove the tooltip from the DOM
$(&#tooltip&).remove();
$(this).mousemove(function (e) {
$(&#tooltip&)
.css(&top&, (e.pageY + defaults.xOffset) + &px&)
.css(&left&, (e.pageX + defaults.yOffset) + &px&);
里面多了这个:
var defaults = {
speed: 500,
xOffset: 10,
yOffset: 10
var options = $.extend(defaults, options);
defaults就是默认的参数,extened就是把实参覆盖到默认参数上面,来个和而唯一,于是当你用这个插件是可以
$(xx).quberTip();
$(xx).quberTip( speed: 2000, xOffset: 100,);/*或者*/
$(xx).quberTip( speed: 2000, xOffset: 100,yOffset: 10);/*或者*/
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1126次
排名:千里之外

我要回帖

更多关于 360插件源 的文章

 

随机推荐