var sHTML="<input type=button onclick=" +
"go2()" + " value='Click Me'><BR>"
var sScript='<SCRIPT DEFER>'
sScript = sScript +
'function go2(){ alert("Hello from inserted script.") }'
sScript = sScript + '</script' + '>';
var ScriptDiv=document.getElementById("ScriptDiv");
alert(ScriptDiv)
ScriptDiv.insertAdjacentHTML("afterBegin",sHTML + sScript);
一般论坛多个版面代码基本上也是一样的,放在一起又有何不可


断断续续修改,最后结果如下

在.NET的属性编辑器PropertyGrid里,如果这个属性是一个集合,那么,.NET会给你一个集合编辑器窗口,很好用的东西,但是,这个东西不是继承Form或UserControl,没法像控件一样拿出来用,而是作为属性的注解,代理生成的窗体,具体情况没仔细看

搜了搜,找不到这样的控件,自已写个,原理也简单,关键是这个泛型集合赋值取值问题
集合采用ILIST传入传出,类的属性加上和用ProPertyGrid一样的注解,基本上实现了所需要的功能
最终效果
具体实例在这里 WebBrowse.zip
HTTPREQUEST请求时,如果响应的页面作了转向,那么,本该在第一次页面返回的COOKIE因为这次跳转丢失了,它可能认为是两次请求,返回了第二个页面的COOKIE,多数情况我们不关心它是否跳转,只需取得结果就行
HTTPREQUEST只有一个属性和重定向有关AllowAutoRedirect,是否自动转向,默认是TRUE,设为FALSE,它就不会自动转向了,并且返回一个异常,返回的状态代码为302(转向),所以可以用这个来处理,设为不自动重定向,取得正常返回的COOKIE,完成后,要取得返回的结果,只能再请求一次它将要转向的URL了
论坛文本浏览器加上了登录功能,能访问需要登录的地址,WINFORM登陆WEB其实是就是POST一系列参数到登陆地址,再取到返回的COOKIE
POST一个地址很简单,直接用HttpRequest请求就行了,加上一些参数,普通的基于HTTP处理的页面比如ASP,PHP直接POST过去就接收了,但ASPX基于事件的WEB就有点麻烦,ASPX在表单页会生成一个HIDDEN,__VIEWSTATE,里面记录了当前表单的一些信息,提交后会用这个对POST过去的信息验证,要到什么程度?试过好多次后发现,所有表单项都需要验证,这样看来,要POST到ASPX页就要读出这个页所有表单项的值了,在完成所有工作后发现,我的程序还是没有正确提交到ASPX页,仔细检查手动生成的GET参数发现,INPUT TYPE=IMAGE的表单项会生成两个参数,IMAGE.X,IMAGE.Y,只有把这两个参数带上才能成功,并且,这个值也能乱写,保证有这个参数就行了,这个应该是表示坐标的,验证这个很无理
多数登录有验证图片,读这个图片也有点麻烦,有的是用JS生成的HTTP代码加上图片,还好借助WEBBROWSE控件能返回经过浏览器处理的HTML代码
完成了正确POST信息后就是处理返回的COOKIE了,原理也很简单,POST后,读取返回的COOKIE,下次请求时再附加上这个COOKIE,这个COOKIE能反复使用,为了能在下次不用再次点登录,把它序列化保存起来,下次请求时,附加上这个COOKIE
到止,这个程序比较完美了,虽然是自已专用
现在论坛花里胡哨,上班时间看不方便,咋把它整成黑白的
写了一个小程序,从论坛匹配出贴子列表,再按链接打开贴子,贴子也经过处理,去掉样式,图片,背景色,文字颜色
显示的贴子
读出来的列表
字段和匹配设置
增加了多配置,字段编辑
运行环境,.NET2.0 WebBrowse.zip (26.95 KB)
|