有时候蛋疼一下,用PHP自动抓取一些东西。不过碰到ASP.Net这玩意儿顿时傻眼了,翻页等等都是用控件实现的。
还好以前学了点皮毛,知道用ViewState这神奇的玩意儿,知道这个就足够了,打开FireFox,以及HttpWatch,点一下“下一页”请求一下:
其他的没啥用,最重要的是最三面的三个参数。分别是viewstate,方法,参数。
很好办了。curl请求一下。就能获取到刷新后的页面了。
所以。。。HttpWatch真是神器,同样的FireBug、Fiddler也是!
Tips:viewstate的值可以用phpquery或者simple html dom 轻松获取,当然,如果蛋疼一下,用正则去获取也是可以的。
< Asp.Net,FireFox,PHP,PHPQuery >
我是工具控,有啥新工具都爱用。
之前介绍过两款AMF抓包工具Charles 和ServiceCapture,今天再介绍一款非常靠谱的:AMF Explorer
AMF Explorer是一款不错的基于FireFox、Firebug的调试插件。
工具首页:http://amfexplorer.riaforge.org/

< AMF,Firebug,FireFox >
因为FireFox和IE的高度计算方式不同,所以导致了SWFObject嵌入SWF文件时的某些问题。
这两天就遇到了奇怪的问题,在嵌入SWF的时候将高度设置为100%的时候,IE显示正常,FF下愣是不显示,搜索了一下发现官网的第一条就是关于这个问题的(SWFObject Wiki FAQ)。官网的建议是这样的:
<style type="text/css" media="screen">
html, body, #containera, #containerb { height:100%; }
body { margin:0; padding:0; overflow:hidden; }
</style>
不过这种灵活性比较低。我现在遇到的情况是这样的,布局分三块:
第一块:头部和导航栏
第二块:主内容
第三块:底部
第一块和底部的高度的确定的,分别为120px和80px。主内容块的高度为整个可视区域减去120px+80px;
因此就需要对SWFObject推荐的嵌入代码作如下修改:
<script type="text/javascript">
var flashvars = {};
var params = {
menu: "false",
scale: "noScale",
bgcolor: "#FFFFFF"
};
window.onresize = function() {
document.getElementById("altContent").height = document.body.clientHeight – 160;
}
swfobject.embedSWF("AlbumManager.swf", "altContent", "100%", document.body.clientHeight – 160, "9.0.0", "expressInstall.swf", flashvars, params);
</script>
也就是说使用JavaScript模拟了“100% ”。
< FireFox,IE,SWF,SWFObject >
这个东东是Fraser推荐我用的,的确很不错。之前我一直用mht格式保存网页,这个将网页保存为pdf格式的小工具比较实用。
官方网站:http://www.pdfdownload.org/
提供了两种方式:
- FireFox的插件、IE7 &8 的插件
- 网页方式(2009-3-19早上无法访问,服务器错误)
推荐用插件的方式,这样非常方便,而且支持中文:)
< FireFox,IE,PDF >
缓存问题有时非常烦人,通常是加个时间戳或者说是加个参数。
在FireFox下,有更好的解决方案。
- 打开FireFox
- 输入about:config
- 同意警告,继续
- 找到browser.cache.disk.enable,双击设为false;
呵呵,就是这么简单:)
< FireFox,Flash,Flex,SWF >
FireBug是咱的调试好助手。可是不能动态地跟踪一些东东。
最近一同学在开发一玩意儿(是美女哦^o^),发现用的是HttpWatch,这玩意儿之前还真没发现过,俺孤陋寡闻了。
这玩意儿支持IE和FireFox(据说是最新的6.X版才支持的)
官方的定义是
HttpWatch is an HTTP viewer and debugger that integrates with IE and Firefox to provide seamless HTTP and HTTPS monitoring without leaving the browser window.

详情请参照
http://www.httpwatch.com/
有免费的Basic版的,也有收费版的,从395美刀到35995美刀不等~
< Debug,FireFox,HTML CSS JavaScript >
前天写了一篇博文关于onload事件在FireFox和IE下的区别。(暂时不测试Opera,NetScape,Safari等浏览器)
再补充一下:
IE是在Document内容载入前即执行。
而FireFox是等待Document内容全部载入后再执行。
具体表现是,如果在onload中要获取某个element是取不到的,而FireFox却没有问题。
一种比较好的方法就是把 window.onload=onload();写到html的末尾。
或者设置一个定时器,大约3秒左右执行,但这个并不怎么保险:)
HTML真是高深莫测。
PS:最近公司.Net组人手紧缺,So,我又做老本行了。。。亲爱的Flex呀,啥时候才能回去呀?!
< FireFox,IE,JavaScript >
<body onload=”somfunc()”>
这个在IE下是没问题的,可在FireFox下就是不执行。
这个问题比较的细节。这样写,就会运行了。
<script type = “text/javascript” language =”javascript”>
document.body.onload = somfunc();
</script>
但是更好的方法是
document.body.onload=new Function(‘somfunc()’);
Attention:somfunc必须已经被实现。
< FireFox,JavaScript >
这个还是很有用的,特别是Flex对Flash Player的版本要求还是有那么点高的。
记录一下,呵呵:)
<script type=”text/javascript”>
function getFlashVer() {
var f=”";
var n=navigator;
if (n.plugins && n.plugins.length) {
for (var ii=0;ii<n.plugins.length;ii++) {
if (n.plugins[ii].name.indexOf(‘Shockwave Flash’)!=-1) {
f=n.plugins[ii].description.split(‘Shockwave Flash ‘)[1].split(‘ ‘)[0];
break;
}
}
} else if (window.ActiveXObject) {
for (var ii=10;ii>=2;ii–) {
try {
var fl=eval(“new ActiveXObject(‘ShockwaveFlash.ShockwaveFlash.”+ii+”‘);”);
if (fl) {f=ii + ‘.0′; break; }
}
catch(e) {}
}
}
document.write(“Flash Player version: <b>”+f+”</b>”);
}
getFlashVer();
</script>
< FireFox,IE,JavaScript,Safari >
Comments