问题情境:
webbrowser可以正常加载html页面了,需要和js相互传参。有个前提,c#程序和html不要直接影响(自己悟),所以直觉想法是通过中间介质进行传输,而想法第一个介质便是文件。如果没有这个直接影响的前提,可以通过函数传参,也可以通过隐藏控件等等。
思路解析:
1.先实现通过json格式的文件进行数据交互。c#端读写文件顺利,js端读还算顺利,如果通过ajax实现读,要用特定版本的jquery.min.js,才可以在ie上正常加载数据;写并不顺利。硬要写文件可以通过ActiveXObject实现,而该方法仅针对于ie。
2.尝试通过localstorage/sessionStorage,发现浏览器不支持localstorage/sessionStorage(win10 +ie11/edge),c#端也就没有尝试的需要了。
3.尝试通过cookie,经测试(仅测试c#端获取网页有关值),c#、js两端均正常通过。
代码实现:(单展示cookie方法)
//js文件,赋cookie写在一个按钮事件中 $("#btnkk").click(function(event) { alert("444444"); document.cookie="name=zjp"; var name=document.cookie; alert(name); });
//c#文件,读取通过webbrowser展示页面的cookie,写在一个button事件中 private void Button1_Click(object sender, EventArgs e) { CookieContainer myCookieContainer = new CookieContainer(); if (webBrowser1.Document.Cookie != null) { string cookieStr = webBrowser1.Document.Cookie; string[] cookstr = cookieStr.Split(';'); foreach (string str in cookstr) { string[] cookieNameValue = str.Split('='); Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString()); ck.Domain = "www.google.com"; myCookieContainer.Add(ck); } MessageBox.Show(cookieStr); } MessageBox.Show("结束"); }