用JavaScript获取网页中的js、css、Flash等文件(4)

javascript:str='<HTML><HEAD><BASE HREF="'https://www.jb51.net/;str+=document.URL;str+='"></HEAD><BODY><br>\n';c=document.all;for(i=0;i<c.length;i++){o=c[i];if(o.tagName!='IFRAME'&&o.tagName!='FRAME')continue;str+=o.tagName;str+=' : <a href="'https://www.jb51.net/;str+=o.src;str+='">';if(o.name=='')str+=o.src;else str+=o.name;str+='</a><br>\n';};str+='</BODY></HTML>';document.write(str);

这段代码自动对网页进行检查,如果嵌入了frame(包括iframe),则自动显示出frame中的页面链接,否则显示一个空页或无反应。直接点击链接,即可进入相应的页面。

为了保证通用性,上面的代码只对第一层frame进行检查,这对iframe来说问题不大,因为不会有几个正常人会去玩嵌套iframe;但对于普通frame来说,嵌套的可能性还是很大的,而上面的代码需要一层层点进去才能见到嵌套frame,未免有点麻烦。解决的办法就是:如果用上面代码显示的全是FRAME,没有IFRAME,则可以用下面的代码显示全部嵌套frame:

javascript:str='';function getFrame(c,i,j){for(i=0;i<c.length;i++){o=c[i];for(k=0;k<j;k++)str+='&nbsp;&nbsp;';str+='<a href="'https://www.jb51.net/;str+=o.location;str+='">';if(o.name!='')str+=o.name;else str+=o.location;str+='</a><br>\n';no=o.document.frames;if(no.length>0)getFrame(no,0,j+1)};};getFrame(document.frames,0,0);document.write(str);

这段代码自动对网页进行检查,显示出嵌套frame中所有页面的链接及嵌套关系,没有frame则显示一个空页或无反应。直接点击链接,即可进入相应的页面。注意如果页面中含有iframe,则上面的代码可能会出错,所以才要先用第一段代码检查一下有没有iframe。

如果网页中采用了js代码对frame进行检测,导致网页不能脱离frame运行,则为了获得嵌入frame页面中的内容,可以在用上面的代码显示出frame页面链接后,直接在页面链接上点右键选“目标另存为”,保存出HTML代码后再手工编辑或用TextForever等工具辅助编辑。

miniKillEBook v1.04以前的版本存在一个疏忽:我光想到处理FRAME,忘记处理IFRAME,因此在某些人中开始流传这样一种说法:将网页嵌入IFRAME,即可避免被miniKillEBook反编译。在v1.04出来之后,这种说法就真的只能成为传说了。

九、其它问题

Q:如果按下Ctrl+N键后,弹出的IE窗口没有菜单、地址栏,怎么办?
A:从CtrlN ver 1.03开始,提供一个可以打开/关闭的“高级界面”,通过里面的“Script命令”功能,可以直接将要执行的JavaScript代码推送到IE窗口中执行,不用再在地址栏输入。

Q:如果E书起来后禁止了Windows的复制、粘贴功能,上面的js代码好长,不想一个字符一个字符敲,怎么办?
A:从CtrlN ver 1.03开始,提供一个可以打开/关闭的“高级界面”,通过里面的“Script命令”功能,可以直接将要执行的JavaScript代码或URL推送到IE窗口中执行,不用再在地址栏输入。如果您写了自己的JavaScript代码,也可以将它加到CtrlN.spt文件(纯文本文件)中,这样以后可以在Script命令选择窗口中直接选择。

附录 版本更新记录

Version 1.01
按照CtrlN ver 1.03的新增功能,对文档进行了修订。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjjwdp.html