在c#桌面程序中, 如果得到html中内嵌js脚本执行的结果? 在c#桌面程序中, 如果得到html中内嵌js脚本执行的结果? 用.net的脚本引擎能得到吗? 它好像只能执行js代码, 如果里面涉及html元素是不是就不行了请问有什么现成的库吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那要看你想得到什么了?JS脚本中有脚本将结果输出到外部程序.对使用webBrowse的WINFROM程序来说,就是用脚本给WINFROM发消息,WIN程序处理这消息就可以.如果是要外部程序监视脚本执行,那就麻烦点了.可以通过注入脚本短,把脚本覆盖或者转向,然后你处理完再去执行原脚本要继续执行的东西.以下是可供你参考的部分代码组件对象模型 (COM) 必须能够访问脚本对象。将 ComVisibleAttribute 属性添加到窗体类中。 webBrowser1.ObjectForScripting = this;public void Test(String message){ MessageBox.Show(message, "client code");}<button onclick="window.external.Test('called from script code')"> call client code from script code</button>还有webBrowser1.Document.InvokeScript("test", new String[] { "called from client code" }); webBrowser控件可以得到也可以把HTML看做是文本,然后从中读出想要的数据,还有一种就是JS是别外单独的文件,如果你网页已经可以看了你可以在临时文件里面把它复制出来。 把Response获取到,然后提取出js代码,再使用 Eval 函数 to fengyecsdn : 谢谢兄弟, 不过我是想得到结果运行后的结果, 而不是去调用某个脚本. to JunsGo : 我们从 webBrowser 只能得到静态的源文件, 而不是脚本运行后的. (某些脚本运行后, 源文件可能会改变.)to syeerzy : 我想过提取JS, 然后用.net的脚本引擎去动态解释, 不过因为源文件中的脚本极有可能是操作里面的某些HTML元素, 如果我们用脚本引擎去解释时, 应该会提示找不到对象的. to hdt: 能详细指明一下吗?我感觉应该需要一个可以解释HMTL, JS, VSCRIPT等混合内容的引擎, 这样便可以得到JS运行后的HTML源文件. 就是不知道有没有这样的引擎库可以用? private void wb1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { foreach (System.Windows.Forms.HtmlElement he in wb1.Document.All) { System.Diagnostics.Trace.WriteLine(he.TagName); } } to hdt : 兄弟, 这样得到的还是运行前的源文件.. 你可以拿下面的URL试试, 如果脚本运行后, 某些标签里有值, 例如"公司名称", 就是脚本在客户端动态赋予的.http://jobs.chinahr.com/html/2007-10/06/20051026015402001587.htm sorry 取document的时机不对,不能再documentcomplete事件里去,try 等叶面加载完毕后, //项目中添加Micrsoft.mshtml引用--c:\temp\temp.htm--<html><script language="JavaScript">var Temp = "Zswang 路过 :)";</script></html>using mshtml;private void Form1_Load(object sender, EventArgs e){ webBrowser1.Navigate(@"c:\temp\temp.htm");}private void button1_Click(object sender, EventArgs e){ IHTMLDocument2 vDocument = webBrowser1.Document.DomDocument as IHTMLDocument2; IHTMLWindow2 vWindow = vDocument.parentWindow; vWindow.execScript("document.title=Temp;", "JavaScript"); Text = vDocument.title;} 如果你是想获取元素的值,何不在WebBrowser的DocumentCompleted事件中去取:比如:取"公司规模"的值WebBrowser.Document.GetElementById("lblCompanySize").OuterText lz问题解决了? 我想知道方法我在阐述一次问题 比如sina blog的文章 你给出地址得到的是带复杂javascript的html源码而其中文章内容部分是显示 “博文载入中...”现在想得到的是html页面经过执行javascript后 得到的有博文具体内容的html源码 JS三级联动菜单,页面刷新后如何保持之前选择的项目? 关于asp和asp.net混用的问题,请前辈指导! 鼠标Hook中如何判断鼠标中间的滑轮? msdn中的Data Source在哪里能下载到? 有个动态创建数组的问题 急 求教啊 为什么前后两次得到的结果不一样 关于导出EXCEL表格的问题 C#中查询Sql遇到转义符的问题 高手,进来看看关于线程的问题 有哪位知道用C#和VC++6做图象处理的底层区别? 菜鸟勿进: 【求一个组合算法】 抽象类中能实现具体方法?????我记得是不能
对使用webBrowse的WINFROM程序来说,就是用脚本给WINFROM发消息,WIN程序处理这消息就可以.
如果是要外部程序监视脚本执行,那就麻烦点了.可以通过注入脚本短,把脚本覆盖或者转向,然后你处理完再去执行原脚本要继续执行的东西.以下是可供你参考的部分代码
组件对象模型 (COM) 必须能够访问脚本对象。将 ComVisibleAttribute 属性添加到窗体类中。
webBrowser1.ObjectForScripting = this;
public void Test(String message)
{
MessageBox.Show(message, "client code");
}
<button onclick="window.external.Test('called from script code')">
call client code from script code
</button>
还有
webBrowser1.Document.InvokeScript("test",
new String[] { "called from client code" });
也可以把HTML看做是文本,然后从中读出想要的数据,还有一种就是JS是别外单独的文件,如果你网页已经可以看了你可以在临时文件里面把它复制出来。
to JunsGo : 我们从 webBrowser 只能得到静态的源文件, 而不是脚本运行后的. (某些脚本运行后, 源文件可能会改变.)
to syeerzy : 我想过提取JS, 然后用.net的脚本引擎去动态解释, 不过因为源文件中的脚本极有可能是操作里面的某些HTML元素, 如果我们用脚本引擎去解释时, 应该会提示找不到对象的.
to hdt: 能详细指明一下吗?我感觉应该需要一个可以解释HMTL, JS, VSCRIPT等混合内容的引擎, 这样便可以得到JS运行后的HTML源文件. 就是不知道有没有这样的引擎库可以用?
{
foreach (System.Windows.Forms.HtmlElement he in wb1.Document.All)
{
System.Diagnostics.Trace.WriteLine(he.TagName);
}
}
--c:\temp\temp.htm--
<html>
<script language="JavaScript">
var Temp = "Zswang 路过 :)";
</script>
</html>using mshtml;private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate(@"c:\temp\temp.htm");
}private void button1_Click(object sender, EventArgs e)
{
IHTMLDocument2 vDocument = webBrowser1.Document.DomDocument as IHTMLDocument2;
IHTMLWindow2 vWindow = vDocument.parentWindow;
vWindow.execScript("document.title=Temp;", "JavaScript");
Text = vDocument.title;
}
WebBrowser.Document.GetElementById("lblCompanySize").OuterText
得到的是带复杂javascript的html源码
而其中文章内容部分是显示 “博文载入中...”现在想得到的是html页面经过执行javascript后 得到的有博文具体内容的html源码