终于用 C# 把 WebBrowser 页面中的 js 变量取出来了!
2013-10-27 17:31
681 查看
通过 WebBrowser 可以在页面中执行 js 函数,与取得 js 变量值还是有一定距离,考虑到既然可以获取页面元素,为什么不通过页面元素曲线救国呢?马上行动。
1 用万能的 eval 自定义一个函数,用来完成需要的操作
2 再用 eval 调用定义的函数传入特定的参数:
1 用万能的 eval 自定义一个函数,用来完成需要的操作
2 再用 eval 调用定义的函数传入特定的参数:
public static string htmlid = Guid.NewGuid().ToString(); private string GetJsVar(WebBrowser webBrowser1, string varname) { if (webBrowser1.Document == null) return "No document"; webBrowser1.Document.InvokeScript("eval", new[]{ @" CreateHiddenInputForReturn = function(id, val) { var elm = document.getElementById(id); if(elm == null) { elm = document.createElement('INPUT'); elm.id = id; elm.type=""HIDDEN""; document.body.insertBefore(elm); } elm.value = eval('typeof('+val.split(/[\[\.]/)[0]+')')=='undefined' ? id : eval(val); } "}); webBrowser1.Document.InvokeScript("CreateHiddenInputForReturn", new[] { htmlid, varname }); HtmlElement obj = webBrowser1.Document.GetElementById(htmlid); if (obj != null) { string val = obj.GetAttribute("value"); if (val == htmlid) return "no js var"; return val; } return "null"; }
相关文章推荐
- 用WebBrowser承载视图,html编写页面,c#编写后端代码;用js调用后端代码,传入function参数作为回调;
- c#中如何在cshtml页面实现js调用cs变量(mvc模式)
- C# winForm webBrowser页面中js调用winForm类方法
- js中我定义一个var变量,在页面想显示出来,用什么东西显示比较好,var比较长还有空格
- .NET中WebBrowser控件内部页面的JS代码与外部C#代码的相互调用
- C# winForm webBrowser页面中js调用winForm类方法(转)
- 用WebBrowser承载视图,html编写页面,c#编写后端代码;用js调用后端代码,传入function参数作为回调;
- NET中WebBrowser控件内部页面的JS代码与外部C#代码的相互调用
- C#:用WebBrowser获取JS动态加载以后的页面代码并保存图片
- js父子页面相互调用变量及方法
- C# ActiveX 调用页面JS
- JS跨页面调用变量的方法
- C# webbrowser中新窗口在Webbrowser内打开屏蔽网页JS错误
- C# webbrowser中新窗口在Webbrowser内打开屏蔽网页JS错误
- C#中webBrowser加载页面中的不同域的iFrame的源代码的取得
- C#向前台页面中输出JS代码 .
- iframe子页面与父页面元素的访问以及js变量的访问
- C#后台程序与HTML页面中JS方法互调(功能类似于Ajax中的DWR)
- TCppWebBrowser调用js脚本获取页面内容
- JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)