Winform获取js变量值

问题情境:

  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("结束");
        }

 

posted @ 2020-03-05 15:14  风影我爱罗  阅读(517)  评论(0编辑  收藏  举报