zoukankan      html  css  js  c++  java
  • 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("结束");
            }
  • 相关阅读:
    三星t5拆解
    一条 SQL 引发的事故,同事直接被开除!!
    Git 不能提交空目录?我也是醉了!
    Redis 6.0.8 紧急发布,请尽快升级!
    String.format() 图文详解,写得非常好!
    为什么 Redis 要比 Memcached 更火?
    Lambda 表达式入门,这篇够了!
    天啊,为什么我的 Redis 变慢了。。
    写出一手烂代码的 19 条准则!
    Redis 面试一定要知道的 3 个 问题!
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/12420400.html
Copyright © 2011-2022 走看看