vb.net WebBrowser页面与WinForm交互技巧
上面的两段代码都是为了清晰易懂而精简得不能再简的,有很多地方很不完善。比如,没考虑到如何从高亮显示状态复原;也没有大小写匹配等等。当然,掌握了原理之后相信这些都不会太难。 先不管作者出于什么目的让Hel三个字母成为粗体,总之显示在页面上的是一句“Hello World!”。在我们希望高亮页面中的“Hello”这个关键字时,如果用DOM分析的话,会得出含有“Hel”的<b>节点和文本节点“lo World!”两个节点,因此无法将其挑出来。而TextRange则能正确识别,将其设置为高亮。因此也可以说TextRange是只和文本有关,和HTML语法结构无关的对象。 returna+ b; } 那么,我们要在WinForm调用它,只需如下代码即可: objectoSum=webBrowser.Document.InvokeScript("DoAdd",newobject[]{1,2 });intsum=Convert.ToInt32(oSum); 其次,如果我们想执行一段Web页面中原本没有的脚本,该怎么做呢?这次.Net的类没有提供,看来还要依靠COM了。IHTMLWindow2可以将任意的字符串作为脚本代码来执行。 stringscriptline01=@"functionShowPageInfo(){" ;stringscriptline02=@"varnumLinks=document.links.length;" ; stringscriptline03=@"varnumForms=document.forms.length;" ; stringscriptline04=@"varnumImages=document.images.length;" ; stringscriptline05=@"varnumScripts=document.scripts.length;" ; stringscriptline06=@"alert('网页的统计结果:rn链接数:'+numLinks+" ; stringscriptline07=@"'rn表单数:'+numForms+" ; stringscriptline08=@"'rn图像数:'+numImages+" ; stringscriptline09=@"'rn脚本数:'+numScripts);}" ; stringscriptline10=@"ShowPageInfo();" ; stringstrScript=scriptline01+scriptline02+scriptline03+scriptline04+scriptline05+ scriptline06 +scriptline07+scriptline08+scriptline09+ scriptline10; IHTMLWindow2win= (IHTMLWindow2)webBrowser.Document.Window.DomWindow; win.execScript(strScript,"Javascript"); OK,今天就写到这里吧,再想起什么来再补充吧。欢迎大家多多指正,欢迎讨论。 其它备注: 如何获取引发单击(onclick)事件的网页元素?
htmldocuments=webbrowser1.document htmldocuments.GetElementById("YYYY").AttachEventHandler("onfocus",AddressOf LabelShow) htmldocuments.GetElementById("XXXX").AttachEventHandler("onfocus",AddressOf LabelShow) Private Sub LabelShow '在此处,我如何才能得到处发这个事件的元素ID,也就是YYYY或是XXXX End Sub
Private Sub LabelShow(sender As Windows.Forms.HtmlElement,e As EventArgs) End Sub ------解决方案-------------------------------------------------------- 要想获得你想要的id 那这个自定义函数的委托要正确,换句话说自定义函数跟触发条件的签名是要一致的,楼上的兄弟已经给你样板了。 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |