如何在webbrowser中让页面中的js运行前替换一个js代码呢。例如网页中有一个脚本段,里面有一个:alert("a")和 username.focus()在页面下载完以后激发完成事件时,通过WebBrowser1.Document.All.tags("script")找出所有脚本段,然后替换里面的内容。
现在的问题,替换时,alert已经发生了,再替换也没用了。我试了几个事件,只有navigatecompelete2事件可以在js运行前替换,但是有一个严重问题就是这个事件发生时,整个html还没有下载完,所以网页后面部分的js脚本根本检测不到。等下载完,又不发生这个事件了,其他事件发生时,例如downloadcompelete事件发生时,js已经运行了,我指的运行就是alert()函数已经弹出了。难道没有一个标准的下载完未激活的事件?
现在的问题,替换时,alert已经发生了,再替换也没用了。我试了几个事件,只有navigatecompelete2事件可以在js运行前替换,但是有一个严重问题就是这个事件发生时,整个html还没有下载完,所以网页后面部分的js脚本根本检测不到。等下载完,又不发生这个事件了,其他事件发生时,例如downloadcompelete事件发生时,js已经运行了,我指的运行就是alert()函数已经弹出了。难道没有一个标准的下载完未激活的事件?
解决方案 »
- 请教,运行时显示什么内存初始化失败,看系统日志找不到附属汇编Microsoft.VC90.CRT,上一个错误是参照的汇编没有安装在系统上
- vc++6.0中CLASSWIZARD中的MEMBER VARIABLE选项卡功能 在VS2005里怎么找啊?就是增加成员变量什么的,谢谢!
- 使用MSHTML编写程序时,如果取得指定Frame下的指定Table.Table的ID,Name等已知. (十万火急. 可以将所有的分奉献 我共有1401分)
- 引用别人的视图类后发生错误,不知什么原因?
- 用WIN32汇编写的菜单,不能接收快捷键,请问这是为何???
- 网络数据包拦截,高手请进!
- 如何判断通过calloc分配的内存已经释放掉了?
- HtmlHelp()在net中的使用(给个就简单的示例)
- 如何获得文件路径?
- 如何得到磁盘信息?(用API或注册表)
- 循环问题
- VC一个很奇怪的问题
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>物业税开征渐近:“空转”今年将推广至全国_理财跟贴_网易跟贴</title>
<body>
<div></div>
<div><script type="text/javascript">
var mydate = new Date();
var mytimestamp = parseInt(mydate.valueOf() / 1000);
alert("s");
</script>
<script type="text/javascript">
document.focus();
alert("vvvvvv");
var mydate = new Date();
var mytimestamp = parseInt(mydate.valueOf() / 1000);</script>
</div>
</body>
</html>
就是这段代码,现在两个script段,现在是要在运行前检测到第二段代码,删除其中的alert("vvvvvv"),但是如果这段代码放在第一段代码之前(也就是把两个script调换一个位置),就可以检测到,放最后面就检测不到。
就是用navigatecomplete2事件进行检测。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>物业税开征渐近:“空转”今年将推广至全国_理财跟贴_网易跟贴 </title>
<body>
<div>
</div>
<div>
<script type="text/javascript">
document.focus();
alert("vvvvvv");
var mydate = new Date();
var mytimestamp = parseInt(mydate.valueOf() / 1000);
</script>
<script type="text/javascript">
var mydate = new Date();
var mytimestamp = parseInt(mydate.valueOf() / 1000);
alert("s");
</script>
</div>
</body>
</html> 也就是说如果变成这样的,那么在navigatecomplete2事件中就可以检测到,是不是有点莫名其妙啊。
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>物业税开征渐近:“空转”今年将推广至全国_理财跟贴_网易跟贴</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"></HEAD>
<BODY>
<DIV></DIV>
<DIV>
<SCRIPT type=text/javascript>
document.focus();
alert("vvvvvv");
var mydate = new Date();
var mytimestamp = parseInt(mydate.valueOf() / 1000);</SCRIPT>
</DIV></BODY></HTML>
使用响应 DocumentComplete而不是NavigateComplete2.这个时候文档并不一定都下载完了。
写入
function alert(){return true}