一JS编写的网页,用VIEPAGE查看出的某个按钮源码:
<TD class=tablelstyle  id=TD_ID_702 noWrap align=middle width=78>
<SCRIPT language=javwscript><!--
var aclass="cn_12px_white";
if(currentMenuName="702"){aclass="cn_12px_blue";}
document.writeln(" <a id=\"A_ID_702\" class="+aclass+"href=\"#\'onclick=\"javascript:FUNC_MENUBAR_MENU_CLICK('702','childmenu','','');
return false;\"> <center>申报 <center> <a>');
//-->
</SCRIPT>
<A class=cn_12px_white id=A_ID_702 onclick="javascript:FUNC_MENUBAR_MENU_CLICK('702',childmenu,'','',"
);return false;"href="#">
"> <center>申报 <center> </A> </TD>就是点击这个“申报”出现下一个节点,我用
document.name="申报" then 点击不行  name=702或A_ID_702都不行
Set vDoc = WebBrowser1.Document   vDoc.All("TD_ID_702").Click  也不中
vDoc.A_ID_702.click()还不行
应该怎么写点击它的代码??要不那位高手说下怎么用VB直接把JS的语句运行?

解决方案 »

  1.   

    Set vDoc = WebBrowser1.Document
    vDoc.getElementById("A_ID_702").click
      

  2.   


    getElementById这要引用什么才能工作?
      

  3.   

    查了下,getElementById是JS里的,VB里面怎么用?要引用什么才行,我单独用这句子总是提示对象未定义
      

  4.   

    对了,在VB中要引用MSHTML(Microsoft HTML Object Library)才能使用。
      

  5.   

    内部网络,你们没法联接!郁闷中错误提示:
    实时错误91
    对象变量或with块变量未设置
      

  6.   

    我来传源文件:
    <META http-equiv=Content-Language content=zh-cn>
    <META content="Microsoft FrontPage 6.0" name=GENERATOR>
    <META content=FrontPage.Editor.Document name=ProgId>
    <META http-equiv=Content-Type content="text/html; charset=GBK"><BASE target=contents><LINK href="pages/menu/style/style.css" type=text/css rel=stylesheet></HEAD>
    <BODY text=#000000 leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
    <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
    <TBODY>
    <TR>
    <TD vAlign=top width="100%" background=pages/menu/files/top_bg.jpg height=73>
    <TABLE cellSpacing=0 cellPadding=0 width=1005 align=left border=0>
    <TBODY>
    <TR>
    <TD background=pages/menu/files/top01.jpg height=73>
    <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
    <TBODY>
    <TR>
    <TD width="20%">&nbsp;</TD>
    <TD vAlign=top width="54%">
    <DIV align=center>申报征收平台</DIV></TD>
    <TD align=middle width="26%">&nbsp;<A class=T_song12_wt href="../FirstPageAction.do?method=firstPage" target=_top><IMG height=14 src="pages/menu/files/m_02.gif" width=16 align=absBottom border=0><FONT color=#000000>&nbsp;首页</FONT></A> <SPAN class=cn_12px_white>&nbsp;<A class=T_song12_wt onclick=closewin(); href="#" target=_top><IMG height=16 src="pages/menu/files/m_12.gif" width=16 align=absBottom border=0>&nbsp; 关闭 </A></SPAN></TD></TR>
    <TR>
    <TD>&nbsp;</TD>
    <TD>&nbsp;</TD>
    <TD>&nbsp;</TD></TR>
    <TR>
    <TD>&nbsp;</TD>
    <TD colSpan=2 height=23>
    <FORM name=MENU_FORM method=post></FORM>
    <SCRIPT language=javascript>
    <!--
    var realSize = -1;
    var count = -1;
    var lastindex = -1;
    function FUNC_MENUBAR_MENU_INIT(){
    realSize = screen.width-0;
    if (473>realSize){
    realSize = realSize-0;
    count = Math.floor((realSize+1)/79);
    }
    if (count != -1)
    lastindex = 2 * count - 2;
    }
    var currentMenuName = "";
    function FUNC_MENUBAR_MENU_CLICK(menuName, aimFrm, menuLocation, menuTarget){
    var tdelement,aelement;
    if (currentMenuName != ""){
    tdelement=document.all("TD_ID_"+currentMenuName);
    aelement=document.all("A_ID_"+currentMenuName);
    if (tdelement != null)
    tdelement.className = "table1style";
    if (aelement != null)
    aelement.className = "cn_12px_white";
    }
    currentMenuName = menuName;
    tdelement=document.all("TD_ID_"+currentMenuName);
    aelement=document.all("A_ID_"+currentMenuName);
    if (tdelement != null)
    tdelement.className = "table2style";
    if (aelement != null)
    aelement.className = "cn_12px_blue";
    if (menuLocation != ""){
    document.all("MENU_FORM").action="/webroot/sbzs/controller.do?location="+menuLocation+"&remove=";
    document.all("MENU_FORM").target=menuTarget;
    document.all("MENU_FORM").submit();
    }
    if (aimFrm != ""){
    var aimobj = top.document.all(aimFrm);
    var aimsrc = aimobj.src;
    var index = aimsrc.indexOf("?", 0);
    if (index == -1)
    aimsrc = aimsrc + "?" + "parentName" + "=" + menuName;
    else{
    index = aimsrc.indexOf("parentName", index);
    if (index == -1)
    aimsrc = aimsrc + "&" + "parentName" + "=" + menuName;
    else{
    aimsrc = aimsrc.substring(0, index);
    aimsrc = aimsrc + "parentName" + "=" + menuName;
    }
    }
    aimobj.src=aimsrc;
    }
    }
    document.onload=FUNC_MENUBAR_MENU_INIT();FUNC_MENUBAR_MENU_CLICK('701', 'childmenu', '', '');
    //-->
    </SCRIPT><TABLE class="" height=23 cellSpacing=0 cellPadding=0 width=realSize border=0>
    <TBODY>
    <TR>
    <SCRIPT language=javascript>
    <!--
    var tdclass = "table1style";
    var aclass = "cn_12px_white";
    if (currentMenuName == "701"){
    tdclass = "table2style";
    }
    if (count > -1 && 0 >= count){
    document.writeln("<td  id=\"TD_ID_701\" style=\"display:none\" width=\"78\" class="+tdclass+"align=\"center\" nowrap>");
    }else{
    document.writeln("<td  id=\"TD_ID_701\"width=\"78\" class=\""+tdclass+"\" align=\"center\" nowrap>");
    }
    //-->
    </SCRIPT><TD class=table2style id=TD_ID_701 noWrap align=middle width=78>
    <SCRIPT language=javascript>
    <!--
    var aclass = "cn_12px_white";
    if (currentMenuName == "701"){
    aclass = "cn_12px_blue";
    }
    document.writeln("<a id=\"A_ID_701\" class="+aclass+" href=\"#\" onclick=\"javascript:FUNC_MENUBAR_MENU_CLICK('701', 'childmenu', '', '');return false;\"><center>申报</center></a>");
    //-->
    </SCRIPT>
    <A class=cn_12px_blue id=A_ID_701 onclick="javascript:FUNC_MENUBAR_MENU_CLICK('701', 'childmenu', '', '');return false;" href="#">
    <CENTER>申报</CENTER></A></TD>{不能全部放下源码,中间的都一样,我省了}
    <TD class=table1style id=TD_ID_706 noWrap align=middle width=78>
    <SCRIPT language=javascript>
    <!--
    var aclass = "cn_12px_white";
    if (currentMenuName == "706"){
    aclass = "cn_12px_blue";
    }
    document.writeln("<a id=\"A_ID_706\" class="+aclass+" href=\"#\" onclick=\"javascript:FUNC_MENUBAR_MENU_CLICK('706', 'childmenu', '', '');return false;\"><center>查询</center></a>");
    //-->
    </SCRIPT>
    <A class=cn_12px_white id=A_ID_706 onclick="javascript:FUNC_MENUBAR_MENU_CLICK('706', 'childmenu', '', '');return false;" href="#">
    <CENTER>查询</CENTER></A></TD>
    <TD width=2048></TD></TR></TBODY></TABLE>
    <SCRIPT language=javascript>
    <!--
    var iFirst = 0;
    var iLast = lastindex;
    var ids = new Array(11);
    ids[0] = "TD_ID_701";
    ids[1] = "SEP_ID_702";
    ids[2] = "TD_ID_702";
    ids[3] = "SEP_ID_703";
    ids[4] = "TD_ID_703";
    ids[5] = "SEP_ID_704";
    ids[6] = "TD_ID_704";
    ids[7] = "SEP_ID_705";
    ids[8] = "TD_ID_705";
    ids[9] = "SEP_ID_706";
    ids[10] = "TD_ID_706";
    function next(){
    if (count == -1)
    return;
    if (iLast>=ids.length-1) return;
    document.all.item(ids[++iLast]).style.display="";
    document.all.item(ids[++iLast]).style.display="";
    document.all.item(ids[iFirst++]).style.display="none";
    document.all.item(ids[iFirst++]).style.display="none";
    }
    function prior(){
    if (count == -1)
    return;
    if (iFirst<=0) return;
    document.all.item(ids[iLast--]).style.display="none";
    document.all.item(ids[iLast--]).style.display="none";
    document.all.item(ids[--iFirst]).style.display="";
    document.all.item(ids[--iFirst]).style.display="";
    }
    function isRollShow(){
    if (count == -1)
    return false;
    else
    return true;
    }
    //-->
    </SCRIPT>
    </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></BODY></HTML>大虾,HELPME,我要疯了。。
      

  7.   

    我看了一下,这个是框架集中的一个框架网页吧?那么主网页的代码呢?这个页面在框架中,当然不能直接从WebBrowser1.Document得到这个网页的Document的引用,用前面的方法当然就找不到对应的元素。把包含框架集定义的主网页的代码发上来,并说明这个菜单网页所在的框架是哪一个。
      

  8.   

    以下为IE显示的源文件
    <html>
    <head>
    <title>
    个人工作台-[李峰]
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    </head>
    <script language="javascript">
    <!--
    wWidth = window.screen.width;if (wWidth*1<=1024) {
    document.write("<frameset name='n' frameborder='NO' cols='0,1008,*'>");
    } else {
    lWidth = (wWidth-1008)/2-1;
    document.write("<frameset name='n' frameborder='NO' cols='"+lWidth+",1008,*'>");
    }
    //-->
    </script> <frame name="left" scrolling="NO" noresize src=""/>
      
    <frameset rows="74,*,23" frameborder="NO" border="0" framespacing="0">

      <frame name="rootmenu" scrolling="NO" noresize src="/webroot/sbzs/rootmenu.do"/>
      <frameset id="Child" cols="182,9,*" frameborder="NO" border="0" framespacing="0" rows="*">
        <frame name="childmenu" frameborder="NO" border="0" framespacing="0" scrolling="no" noresize src="/webroot/sbzs/childmenu.do"/>
        <frame name="menubar" frameborder="NO" border="0" framespacing="0" scrolling="no" noresize src="menu/MenuBar.jsp"/>
       
        <frame name="pagearea" frameborder="NO" border="0" framespacing="0" scrolling="yes" noresize src="/webroot/sbzs/viewpage.do"/>
        
      </frameset>
      <frame  name="bottom" scrolling="NO" noresize src="menu/Bottom.jsp"/>
    </frameset> <frame name="right" scrolling="NO" noresize src=""/><noframes>
    <body bgcolor="#FFFFFF" text="#000000">
    </body>
    </noframes>
    </html>取大框架的源码
    <FRAMESET border=0 frameSpacing=0 rows=74,*,23 frameBorder=NO><FRAME name=rootmenu src="/webroot/sbzs/rootmenu.do" noResize scrolling=no><FRAMESET id=Child border=0 frameSpacing=0 rows=* frameBorder=NO cols=182,9,*><FRAME border=0 name=childmenu frameSpacing=0 src="/webroot/sbzs/childmenu.do?parentName=701" frameBorder=NO noResize scrolling=no><FRAME border=0 name=menubar frameSpacing=0 src="menu/MenuBar.jsp" frameBorder=NO noResize scrolling=no><FRAME border=0 name=pagearea frameSpacing=0 src="/webroot/sbzs/viewpage.do" frameBorder=NO noResize scrolling=yes></FRAMESET><FRAME name=bottom src="menu/Bottom.jsp" noResize scrolling=no></FRAMESET>主框架的源码
    <FRAME name=rootmenu src="/webroot/sbzs/rootmenu.do" noResize scrolling=no>应该就这些了吧,今天晚了去不了办公室,你先帮看下,谢谢
      

  9.   

    Dim html As String, link As String
    html = 源代码
    link = Split(Split(html, "onclick=")(1), """")(1)
    Webbrowser1.Navigate link
      

  10.   

    我愚钝,是应该这么写吗?
    html=document.writeln(" <a id=\"A_ID_702\" class="+aclass+"href=\"#\'onclick=\"javascript:FUNC_MENUBAR_MENU_CLICK('702','childmenu','','')
      

  11.   

    以下变量在模块级定义:
    Private frmDenied  As Long
    以下两个过程与上述变量放在一个模块中:
    Private Sub Command2_Click()
        Dim wbDoc As HTMLDocument
        Dim blnClicked As Boolean, MyId as String
        MyId = "A_ID_702"
        frmDenied = 0
        Set wbDoc = WebBrowser1.Document
        If (Not wbDoc Is Nothing) And WebBrowser1.LocationURL <> "about:blank" Then
            blnClicked = ClickTheId(wbDoc, MyId)
            If blnClicked Then
                MsgBox "The element was clicked.", , "Result"
            Else
                MsgBox "The element with the specified ID was not found." & _
                        IIf(frmDenied, "This could be caused by denied access." & _
                        vbCrLf & "Access to " & frmDenied & " frames was denied!", ""), vbExclamation, "Result"
            End If
        End If
    End SubFunction ClickTheId(TheDocument As HTMLDocument, TheId As String) As Boolean
        Dim ElWithId As Object, oFrame As IHTMLWindow2, oDoc As HTMLDocument, i As Long, bClicked As Boolean
        Set ElWithId = TheDocument.getElementById(TheId)
        If Not ElWithId Is Nothing Then
            On Error Resume Next
            ElWithId.focus
            On Error GoTo 0
            ElWithId.Click
            Set ElWithId = Nothing
            ClickTheId = True
        ElseIf TheDocument.frames.length > 0 Then
            For i = 0 To TheDocument.frames.length - 1
                Set oFrame = TheDocument.frames(i)
                On Error Resume Next
                Set oDoc = oFrame.Document
                If Err.Number = 70 Then
                    frmDenied = frmDenied + 1
                    MsgBox "Error # " & Err.Number & ", " & Err.Description & vbCrLf & _
                                    "Source: " & Err.Source, , "Error"
                Else
                    bClicked = ClickTheId(oDoc, TheId)
                    If bClicked Then ClickTheId = True: Exit Function
                End If
            Next i
            ClickTheId = False
        Else
            ClickTheId = False
        End If
    End Function
    在WebBrowser1所在的Form上建一个按钮,命名为Command2,这样单击该按钮的时候就会触发上面的第一个过程进行事件处理;在第一个过程中将会调用后一个Function完成指定的模拟单击动作。为了帮助你分析相关问题,有关MsbBox的信息提示部分我保留了,以后如果觉得不必要,可以根据需要将它们注释掉。
      

  12.   

    以上的ClickTheId函数具有一定通用性,可用于模拟任何HTML文档(或子文档)中的单击操作,只需传入对该文档(子文档)的引用及要单击元素的ID。如果在文档中找不到指定的元素,会尝试遍历其所有框架文档,找到指定ID的元素后即单击之。但有两个问题需要注意:1、对于框架操作,由于存在“跨域”操作的可能性,而IE出于安全性的考虑对“跨域”访问默认是禁止的,所以可能找不到指定的元素,这取决于指定的元素与传入的文档之间是否存在“跨域”的问题以及它们之间的“跨域”信任状态;2、如果指定ID的元素不是A、Input等有单击意义的元素,即使该函数找到了对应元素并模拟了单击动作,也没有意义,比如一般情况下如果对一个P元素或者一个Div元素进行单击的话是没有意义的,只有对包含其中的A、Input等元素进行单击才有意义,如果要对包含其中的有单击意义的元素进行单击,请指定该有单击意义元素的ID或者对该函数的功能进行扩展以使函数也能自动查找其中的A等元素。
      

  13.   

    谢谢zhiyongtu的解说,但我想说对新手来说,句子是越少越好,你说的很好,菜鸟却有点儿感觉很难,相比之下,我觉得northwolves的回贴很好,在这儿我想问下二位link最后应该等于
    \"javascript:FUNC_MENUBAR_MENU_CLICK('702','childmenu','','');return false;\"
    还是要去掉双引号和\??
      

  14.   

    zhiyongtu这个放之四海而皆准的贴子肯定是好的,我的这个
    http://topic.csdn.net/u/20090517/19/19503fd1-b1fe-430e-a54d-9c449e5cb5d1.html
    贴子也能解决了,请去回下接分,这个贴子我等下狼兄的回复
      

  15.   

    狼兄的意思是把类似<A class=cn_12px_white id=A_ID_702 onclick="javascript:FUNC_MENUBAR_MENU_CLICK('702',childmenu,'',''," 
    );return false;"href="#"> 
    "> <center>申报 <center> </A>这样的元素定义HTML源码代入html = 源代码然后Split(html, "onclick=")将由onclick=分隔的各个部分全部取出放入数组,数组的第一个元素(下标为0)当然就是第一个onclick=左边的部分,在这个例子中就是
    <A class=cn_12px_white id=A_ID_702 
    而在这个例子中,第二个元素(下标为1)就是
    "javascript:FUNC_MENUBAR_MENU_CLICK('702',childmenu,'',''," 
    );return false;"href="#"> 
    "> <center>申报 <center> </A>
    这第二个元素由Split(html, "onclick=")(1)便可得到。然后再对第二个元素进行分隔抽取:
    Split(Split(html, "onclick=")(1), """")
    这一次是将"号作为分隔符来进行抽取,第一个元素就得到第一个"号左边的部分,即为空字符串,而第二个元素(下标为1)就为第一、二个"号之间的部分,即
    javascript:FUNC_MENUBAR_MENU_CLICK('702',childmenu,'',''," );return false;
    这就是Split(Split(html, "onclick=")(1), """")(1)的值,也即link的值将这一字符串作为一个URL交给IE进行Navigate的时候,因为这一字符串是以javascript:开头,所以IE就把它识别为一行javascript语句,就执行之。如果是把
    document.writeln(" <a id=\"A_ID_702\" class="+aclass+"href=\"#\'onclick=\"javascript:FUNC_MENUBAR_MENU_CLICK('702','childmenu','',''); 
    return false;\"> <center>申报 <center> <a>'); 
    这个语句赋给html,得到的将是第一个onclick=之后的两个"号之间的部分,也即
    javascript:FUNC_MENUBAR_MENU_CLICK('702','childmenu','',''); 
    return false;\
    多了一个\符号,前面的部分虽然能够得到执行,但恐怕会出一点小错误,因\符号即不是一个合法语句开始标识,也不是一个注释的开头,大概IE会报“无效的标识符”之类的小错误吧,但只要确定了,也无大碍。
      

  16.   

    认真学习,不用VB用java可以吗?
    谢谢!