当前位置:编程学习 > C#/ASP.NET >>

WebBrowser 操作

界面是 Frame  的 ,左边是  菜单  菜单是用 由JS动态生成的
<li class="focus" id="1000011" onclick="clickThirdMenu(false, '1000011', '0000738', '测试', '/pages/bsd/repaircard/aadg.jsf?authKey=47yh%2BwMmFMxgLy8sWheaTP1wYz0hM%3D', this, null);"><span style="cursor:hand" class="text">测试</span></li>

这是其中的一项

我写的 单击 这个选项的代码
   HtmlElement btnSubmit = webBrowser1.Document.Window.Frames["frameNav"].Document.All["1000011"];
   if (btnSubmit!= null)
     btnSubmit.InvokeMember("click");

 执行报错  说 属性 clickThirdMenu 的值为null 、未定义或不是Function 对象代码 0

请高手指教

webbrowser C# html 采集 浏览器 --------------------编程问答-------------------- 摆渡

http://hi.baidu.com/superfeng/item/2d8a6f154b7dd0f8ddeeca21

http://www.cnblogs.com/peterzb/archive/2009/07/12/1521787.html

http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html --------------------编程问答-------------------- 顶一个 --------------------编程问答-------------------- --------------------编程问答-------------------- 那个JS方法在哪里? --------------------编程问答-------------------- <script language="javascript"><!--

<!--

var url = "/";

// 页面跳转
(function() {
    var accessUrl = url + 'pages/sys/frame/iframe-access';
    var resError = function(retMsg, retCode) {
        retMsg = retMsg || '';
        retCode = retCode || '';
        window.location.replace(accessUrl + '?retMsg=' + encodeURIComponent(retMsg)
                + '&retCode=' + encodeURIComponent(retCode));
    };
try {
    var iframeAccessUrl = '';
    if (iframeAccessUrl) { // 如果是iframe集成ESS页面透明登录后跳转
        if ('empty' == iframeAccessUrl) {
            resError('跳转地址为空');
            return;
        }
        if (!window.parent || window.parent.length == 0) {
            resError('没有嵌套页面');
            return;
        }
        window.location.replace(iframeAccessUrl);
        return;
    }
    // 该页面不能被嵌套
    if (window.parent && window.parent.length != 0) {
        window.parent.location.href = url;
        return;
    }
    // 不跳转
} catch (e) {
    resError('js出错');
}
})();

function selectedLayItem(fct,laytype){
    if(fct && fct.nodeType){
        var lis=fct.getElementsByTagName("li");
        if(lis && lis.length){
            var li,link;
            for(var i=0;i<lis.length;i++){
                li=lis[i];
                if(typeof(li)!="undefined" && li.nodeType
                   && typeof(li.tagName)!="undefined"){
                    li.className="";
                    if(li.childNodes.length){
                        link=li.childNodes[0];
                        if(laytype==link.getAttribute("laytype")){
                            li.className="on";
                        }
                    }
                }
            }
        }
    }
}

function selectedLayout(laytype) {
    if(!laytype) return false;

    var frameTop=document.getElementById("frameTop");
    var frameFct=document.getElementById("frameFct");
    var fct=null;
    if(frameTop && frameTop.contentWindow.document){
        fct=frameTop.contentWindow.document.getElementById("fct");
        selectedLayItem(fct,laytype);
    }
    fct=null;
    if(frameFct && frameFct.contentWindow.document){
        fct=frameFct.contentWindow.document.getElementById("fct");
        selectedLayItem(fct,laytype);   
    }
    
    var frame = document.getElementById("frame");
    var frameWindow = document.getElementById("frameWindow");
    if (laytype == "1") {
        frame.rows = "79,60,*,20";
        frameWindow.cols = "190,6,*";
    } else if (laytype == "2") {
        frame.rows = "0,60,*,20";
        frameWindow.cols = "190,6,*"; 
    } else if (laytype == "3") {
        frame.rows = "79,60,*,20";
        frameWindow.cols = "0,6,*";
    } else if (laytype == "4") {
        frame.rows = "0,60,*,20";
        frameWindow.cols = "0,0,*";
    }
}


-->

//--></script>


这个JS 因该是在左边的导航页面里的 --------------------编程问答-------------------- 我说的可是  在Frame  框架里面的哦,,,并且 菜单是由Js 生成的,不是静态的 --------------------编程问答--------------------
<TD vAlign=top width=40 align=center><BR><BR><BR><BR><BUTTON 
      style="FONT-SIZE: 9pt" onclick="pushBtm('YU')">年↑</BUTTON><BR><BUTTON 
      style="FONT-SIZE: 9pt" onclick="pushBtm('YD')">年↓</BUTTON> 
      <P><BUTTON style="FONT-SIZE: 9pt" 
      onclick="pushBtm('MU')">月↑</BUTTON><BR><BUTTON style="FONT-SIZE: 9pt" 
      onclick="pushBtm('MD')">月↓</BUTTON> 
      <P><BUTTON style="FONT-SIZE: 9pt" onclick="pushBtm('')">今日</BUTTON> 
  </P></TD>

        private void 定时_Tick(object sender, EventArgs e)
        {
            HtmlElement resultElement = null;
                foreach (HtmlElement currentElement in 网页浏览.Document.All)
                {
                    if (currentElement.GetAttribute("value").Contains("年↑"))
                    {
                        resultElement = currentElement;
                        break;
                    }
                }
            if (resultElement != null)
                resultElement.InvokeMember("click");
        }

VS2010 C# 测试通过 --------------------编程问答-------------------- 菜单是动态生成的么 --------------------编程问答-------------------- 像这种写法根本就没办法:
<SELECT style="FONT-SIZE: 9pt" 
            onchange=changeCld() name=SY> 
              <SCRIPT language=JavaScript><!--
            for(i=1900;i<2050;i++) document.write('<option>'+i)
            //--></SCRIPT>
            </SELECT>

所幸是本地文件,可以修改为:
<SELECT style="FONT-SIZE: 9pt" 
            onchange=changeCld() name=SY> 
              <SCRIPT language=JavaScript><!--
            for(i=1900;i<2050;i++) document.write('<option value='+i+'>'+i)
            //--></SCRIPT>
            </SELECT>

修改后可以赋值:
HtmlElement name控件 = 网页浏览.Document.All["SY"];
                string name控件值 = name控件.OuterText;
                if (name控件值 != "1965")
                    name控件.SetAttribute("value", "1965");
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,