关于 PowerBand 的一些说明
=============================
文档大纲:
2.对系统环境的要求
3.安装与反安装
5.使用技巧
6.存在的不足
7.版本历史
8.常见问题回答
9.使用许可
10.关于作者
11.结语
1.PowerBand 是什么
PowerBand是一个Internet Explorer的插件。提供了对HTML动态分析,跟踪,编辑的功能。如果您经常要和HTML打交道,而且长期为之头痛,那么这个东西能够帮助你,并有效减轻您的症状。当面对一个复杂的HTML页面,你想要分析它的结构,面对着茫茫的,混乱的HTML代码,您是否觉得自己很无助?让PowerBand来帮助您吧,您可以去松一口气了。当刚写的一个HTML页面总是不按照您所想的那样显示内容时,您最想做的是什么呢?现在不需要再苦恼了,让PowerBand来帮助您吧,您可以去松一口气了。PowerBand提供了方便而又强大的HTML分析能力,帮助您消灭晦涩的HTML代码给您带来的很多麻烦,它会成您的好朋友,不是吗?
除了上面所说的以外,还因为一时兴趣所至,提供了杀除弹出广告窗口的功能,当然,效果不是特别好,偶尔会有一些漏网,但足以应付大多数令人生厌的广告窗口。
2.对系统环境的要求
希望您有一台体面的计算机,操作系统是Windows98/ME/NT/2000/XP/2003 Server 都可以,Windows95将会需要更新许多的系统部件,所以建议您还不如装一套新的Window98或是WindowsXP,而Internet Explorer浏览器则是必须的,版本最好不要低于5.5,不然提供的就地编辑功能将无法使用。
3.安装与反安装
将所有的文件拷贝至任意目录下,先关闭所有打开着的Internet Explorer窗口,然后使用自带的install.bat进行安装即可。或者也可以在命令行下通过手工输入如下命令来安装。
c:\regsvr32.exe
PowerBand.dll
接下来,打开新的Internet Explorer窗口,您可以从菜单[查看]->浏览器工具中,选择子菜单中的PowerBand,或者直接按下IE工具条上PowerBand所对应的按钮,因为出于使用便捷的考虑,特意为IE添加了一个对应PowerBand的工具栏按钮。然后,您就可以开始享用本软件了。
如果您要反安装的话只要使用uninstall.bat进行反安装即可。或者也可以在命令行下通过手工输入如下命令来反装。
c:\regsvr32.exe /u
PowerBand.dll
然后,就可以安全的删除PowerBand程序文件。
4.外挂脚本环境使用说明
PowerBand支持VBScript和Jscript两种脚本语言。关于脚本语言的详细语法请参考MSDN网站的相关文档。本部分只就PowerBand所提供的扩展功能进行说明。
PowerBand提供了IE 和PBScripting两个扩展对象来帮助你方便的使用。下面是两个扩展对象所提供的属性和方法的列表。其中,IE对象只是对于InternetExplorer COM组件对象的一个引用,详细的说明请参考微软的官方文档,而PBScripting对象是PowerBand所提供的一个扩展功能对象。
IE对象
(http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp)
PBScripting对象
|
方法 |
说明 |
|
CreateObject(ProgID) |
根据ProgID创建对象 |
|
RunScriptCode(strCode) |
运行一段指定的脚本代码 |
|
RunScriptFile(strFileName) |
指定脚本文件名,并运行它 |
|
WriteConsole(strMessage) |
将消息发往控制台 |
|
ShowMessage(strMessage) |
显现一个消息提示框(因为JScript缺少像VBScript所提供的MsgBox函数) |
|
SaveToLocalFile(strUrl,
strDirPath) |
把网页中的二进制内容(通过url引用)保存到本地文件夹内,包括图片,声音,文件,Flash动画,等等。 注:目前该方法对于url所指向的HTML文件或动态网页脚本文件(asp/aspx/jsp/php/cgi)尚未支持。 |
以上两个均为全局对象,在使用时可以省略相应的对象名,而直接调用它们的方法或访问它们的属性。
示例:
|
(VBScript) |
(JScript) |
|
Dim
i Dim
theLink For
i=1 To Document.Links.Length Set theLink = Document.Links.Item(i-1) WriteConsole
"Link ", theLink.href Next |
for (var i=0; i<Document.links.length; i++) { var theLink
= Document.links[i]; WriteConsole(“link”, theLink.href); } |
|
Dim
MSWord Set
MSWord = CreateObject(“Word.Basic”) MSWord.AppShow() MSWord.FileNew() MSWord.Insert
Document.Body.outerHTML |
//var
MSWord = new ActiveXObject(“Word.Basic”); var MSWord = PBScripting.CreateObject(“Word.Basic”); MSWord.AppShow(); MSWord.FileNew(); MSWord.Insert(Document.body.outerHTML); |
|
Dim i Dim ImageObject For i = 0
To Document.Images.Length Set ImageObject = Document.Images(i) SaveToLocalFile ImageObject.src,
“C:\Temp” Next |
for (var i=0; i<Document.images.length; i++) { var theImage
= Document.images[i]; SaveToLocalFile(theImage.src, “C:\Temp”) } |
提供了一些对您有帮助的快捷键。
[1]
树视图: “CTRL+ALT+S” 键/鼠标跟踪模式:“S” 键
适用于树视图和鼠标跟踪模式,可以直接查看当前节点的html源代码及相关信息。当然,对于一些可读写的节点,你还可以直接编辑它的HTML代码,直接在浏览器中显示所修改后带来的变化。
[2] 鼠标跟踪模式: “F” 键
适用于鼠标跟踪模式,可以快速定位当前被跟踪的节点在DOM树中的位置。
[3] 树视图: “CTRL+ALT+R” 键
适用于树视图上,用来刷新当前节点及其子节点的内容。
[4] 树视图: “CTRL+ALT+O” 键/鼠标跟踪模式: “O” 键
适用于树视图和鼠标跟踪模式,针对页面中的Frame元素和Iframe元素,将会打开一个新窗口来显示它们所包含的页面内容。
[5] 树视图: “CTRL+ALT + I” 键/鼠标跟踪模式: “I” 键
适用于树视图和鼠标跟踪模式,用来动态插入一段html代码。
[6] “DEL” 键
适用于树视图和鼠标跟踪模式,可以直接删除当前选中的节点,比如,页面上有 一个很大块的广告在遮挡您的视线,现在可以直接把这个讨厌的东西一删而后快了。
[7] 树视图:“CTRL+ALT+D” 键
适用于树视图上,用以切换当前节点的style.disply属性,默认在"none"和"block"两种状态间互相切换。
[8] 树视图:“CTRL+ALT+V” 键
适用于树视图上,用以切换当前节点的style.visibility属性,默认在"hidden"和"visible"两者间互相切换。
对于新增脚本的说明:
出于爱护键盘的考虑的,您在输入脚本代码时,不用再输入<script></script>块了,同时也没有限制脚本代码的复杂性,也就是说,您可以输入许多函数,直到您满意为止。
6.存在的不足
[1] 某些情况下,无法定位一个元素在树中的位置,目前已知的原因是因为当前页面中包含有未封闭的或不配对的HTML标记(指块级HTML标记),或者因为该元素是某个Frame/IFrame中的内嵌元素。
[2] 鼠标跟踪状态下,当跟踪一个OBJECT元素时,可能无法使用快捷键,原因是因为OBJECT对于对浏览器的键盘事件支持的不够好。晤,这么说脸皮大概很厚吧。。。
[3] 在树视图模式下,浏览OBJECT/APPLET元素时,无法显示内含的PARAM节点,因为微软在实现类似的内嵌节点时进行了特殊处理,目前还没有解决的办法和想要去解决的动力。
[4] 无法捕捉到未命名的Frame/IFrame元素中内嵌页面的HTML事件(未命名是指没有指定id/name的值)。目前的解决方案是,选中未命名frame,使用CTRL+ATL+O/O快捷键在新窗口中打开它,然后再来分析它的结构。
[5] 对于客户端动态生成的页面,可能分析总会落后那么一些,因为当客户端脚本执行object. appendChild()或其他类似的方法后,并没有相应的事件可供截获,所以,目前看来,这是一个悬而未决的难题。如果你要分析客户端的动态页面的话,只有请你常常去刷新一下节点树吧,这是最佳的解决方案了,真的。
[6] 其它未知的不足。。。
如果您有什么意见和想法请告诉我,谢谢。
7.版本历史
[0.9.5.2]
1)修正了展开多级嵌套的FRAMESET/FRAME节点时,会导致IE crash的错误。谢谢网友MalletKing的反馈。
2)一个小改进,PowerBand现在可以使用系统的Theme风格了,看起来漂亮了很多。
3)为树视图的右键菜单新增了一个小功能,可以选中一个节点,切换contentEditable的状态,当然,这要求IE的版本至少是5.5才可以。晤,可有可无的功能,正好想起来,就随手加上了。
[0.9.5.0]
1)非常遗憾的,出于无法回避的原因(这都要怪微软的工程师),静态连编了CRT,所以,不幸的PowerBand 原来那娇小苗条的身材现在凭空增长了近90kb,但是,这换回来了一些强大的功能,虽然,那多出来的体重让我耿耿于怀,但不管怎样,希望你还是能够和以前一样的喜欢它。
2)新增了执行外部脚本来操纵当前IE对象模型的功能。晤,让我来解释一下这个功能吧,因为有朋友提议说希望能够给出一个途径,可以方便的获得当前页面中所有的图片,或是所有连接的地址,甚至是所有的Flash。如果,你熟悉HTML DOM模型的话,就会知道这只是枚举Document.all / images /
links /embeds 集合的举手之劳而已。虽然这很简单,也很容易实现,但是,这与PowerBand的身份不相符合,因为PowerBand被定位成一个强大的面向IE内核的hack工具,负责去挖掘一些IE深层的东西。所以,就有一个声音在一旁说,那为什么不干脆就把IE运行时的DOM结构开放出来,外挂一个脚本的接口,可以通过你写的脚本,让你实时的去操纵它,了解它,去和他交谈,去做任何你想做的事情,甚至还可以去操作你的Windows,文件系统,晤…当然,也可以帮助你格式化硬盘,如果你需要重装系统的话。随分发包同时还提供了几个脚本示例,你可以先运行它们来感受一下,这真的是一个让人激动的功能啊,难道你不这么认为吗?有关于脚本环境的详细说明请参考readme文件中的相关段落。顺便还要说一句的是,你需要使用其他的编辑器来编写脚本,notepad或者editplus,只要你喜欢就都可以,然后交给PowerBand去执行它就行了,而PowerBand并没有提供内置的脚本编辑器,因为,PowerBand是一个Hacker。
3)调整了工具栏的布局,因为又增加了新的功能,导致工具条可能会因为过长而显得臃肿,并且让人眼花,现在把stop popup window功能对应的按钮移到了设置对话框中,虽然这个功纯属多余,但是.....还是继续留着吧。
4) 完善了Customize Dialog的逻辑,以前无法同步显示修改后的内容(一直懒得去实现,因为WTL的DDX总有点问题,自己实现则过于繁琐,所以就被搁置了),现在已经可以正常使用了。
5)修改了搜索节点的算法,原来采用的递归算法被废弃了,现在采用了更加安全高效的方法。
6)其他一些细节的完善和修正。
[0.9.4.x]
1)和ATL7纠缠了几天,终于解决几个已经头痛了几天的问题。
2)修改了PowerBand的行为模式,晤,其实是修正了一些设计上的问题,明确了某些功能的职责和语义。其中包括捕捉HTML事件和就地编辑的冲突模式,页面加载初始化的语义,以及其他一些细微的,但是可能会引发问题的地方都作了调整。
3)增强了IE就地编辑的功能,现在默认打开了LiveResize和2D Position两个选项,并实现了自定义标签图符的占位显示。我知道虽然不会有人真的在IE里面去编辑HTML页面,但是看起来的确很不错,不是吗?(看着现在的IE,可否让你觉得自己面对着的好像是Dreamweaver呢?)
4)比较有新意的是,增加了一个在IE中显示Grid(栅格)的功能,如果当前的页面设定了不透明的背景色,并且勇敢的铺满在整个显示区时,可怜的Grid就被完全挡住了,你将看不见它。新增这个功能出于两个目的,其一是技术上的探索需要,因为这是一种新颖的,有趣的IE扩展方式。其二,是参考了类似Photoshop的绘图软件,可以为你提供一个参照的坐标系,这样就可以方便的定位和丈量某个你感兴趣的元素。
5)优化了事件捕捉部分的代码。
6)这条更新基本上每回总要写一次,或许我应该在文档的头部声明一个宏或者是常量来引用它吧,它的内容定义如下:修正了一些这样和那样的bug。
[0.9.3.1]
1)修正了过滤TextNode时可能会引起无法展开节点的问题。
2)修改了定位查找功能的错误提示信息。目前尚无法定位Frame中的元素,等日后再实现吧。(指对应 f 快捷键的功能)
[0.9.3.0]
1)修改了事件捕捉机制,现在可以catch到Frame/IFrame里面的HTML事件了,但是如果该Frame/IFrame没有被命名(没有指定name/id的值),依然无法catch其中的事件,这真的是件比较头痛的事情,可惜目前还没有找到更好的解决办法。
2)调整了察看html node属性的功能,现在可以在innerHTML和outerHTML两种方式下切换了。
3)完善了树视图中的Attributes节点的处理,现在可以完美的显示内嵌的CSS代码了。
4)修改了树视图的显示方式,现在过滤了可有可无的TextNode类型节点的显示。
5)为察看html node属性新增了节点切换功能,可以直接切换到父子节点及兄弟节点上,同时也发现微软为了兼容人们粗心所造成的html语法错误,在DOM 结构中作了很多宽容大度的处理,是的,这和该公司的一贯作风不相符合。但是这次他们真的这么做了。但这同时也导致了程序员在直接操纵DOM结构时,会发生很多意想不到的,诡异的事情。如果你能够,你就会常常听到有人在喊叫“哦,为什么这个节点会机敏的出现在这里?”,所以,很遗憾,为了避免这种混乱,只能屏蔽掉切换兄弟节点的功能了,直到有一天,能够发现一个可以脱离混乱的办法为止。
[0.9.1.0]
1)修正了几个可能会引起memory leak的小问题。
2)修正了和Windows Explorer冲突的问题。
[0.9.0.2]
1)出于完整性的考虑,为树视图增加了copy html的菜单功能。
2)增加了显示/修改当前页面Cookie的功能。
3)修正了浏览OBJECT/APPLET/FRAME节点时可能会引起的IE崩溃问题。
[0.9.0.0]
1)在IE的工具条上新增了对应PowerBand的按钮,现在可以不用从菜单里面苦苦的寻找了。
2)为树视图增加了右键菜单,原有的大部分快捷键现在都可以使用菜单操作了,除了一个,就是CTRL+ATL+O。
3)为树视图增加了复制当前节点文本的功能。
4)修改并增强了搜索功能。
5)提供了方便的增加脚本功能,可以为当前的页面增加新的脚本,想想当你点击google的搜索按钮时却弹出一个消息告诉操作者“hi,今天google休息”的滑稽场面吧。并且对原来的新增HTML代码功能作了调整,让他安心做好自己该做的。
6)几个小问题的修正。
7)开发环境升级到VC7.1。晤,直接导致文件大了10多kb。
[0.8.9.4+]
1)修正了和IE热键的冲突问题,因而现在针对于树视图的所有快捷键,除了删除键DEL仍然没有变之外,其他均修改为CTRL键和ALT键同时使用的组合键。(没有办法,其实我也不想。。。)
2)新增了两个针对于树视图的快捷键: CTRL+ALT+D/CTRL+ALT+V。用以来切换当且所选择元素的可见性(分别针对于style.display和style.visibility)。
3)提供了动态插入部分HTML源代码的功能。(CTRL+ALT+I/I)
[0.8.9.3]
1)修正了在树视图上使用快捷键会自动跳转的问题。
2)修正了一个对话框的字体错误。
[0.8.9.2]
1)修正了Uninstall 后仍然留下有残余信息的疏漏。
2)修正了在XP Theme下和系统颜色不协调的问题。
3)一个细微小问题的修正。
[0.89] 公开发布的第一个版本。
[0.5x - 0.7x] 在朋友间流传的内部测试版本。
[1] 问:为什么我安装了PowerBand之后却无法使用,只是看到一块白板?
答:如果曾经安装过0.93以前老版本的话,请先反安装老版本,然后安装新版本,再重启动一下机器就可以了。如果是重未安装过PowerBand的机器也有如上情况,可能是您先前安装/反安装过其它的程序,注册表被锁定或使用了cache来缓存修改,请重新启动一下机器就可以了。
9.使用许可
这是一个自由软件,晤,如果有一天变成要收费了,那可能是因为作者被生活所迫,希望没有这一天。
10.关于作者
AWater。一个普通的程序员。一开始只是为了玩玩ATL,结果就写下了这个东西。
如果您有意见和想法,请告诉我,谢谢。
11.结语
希望你能够享受这个小软件。