简体   繁体   English

webBrowser_DocumentCompleted无缘无故地被调用了4次(我可以找到)

[英]webBrowser_DocumentCompleted called 4 times for no reason (that I can find)

I'm out of ideas... 我没主意...

Hi guys, I got little to no knowledge in C# and Html Documents/Elements and something weird happens while using DocumentCompleted. 嗨,大家好,我对C#和HTML文档/元素了解甚少,使用DocumentCompleted时会发生一些奇怪的事情。 Here's the DocumentCompleted code and the PostGame() code : 这是DocumentCompleted代码和PostGame()代码:

    private void WB_CHL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (Date != "")
            PostGame();
        else
            this.Close();
    }

    private void PostGame()
    {
        HtmlDocument doc = null;
        doc = WB_CHL.Document;

        HtmlElementCollection inputelems = doc.GetElementsByTagName("input");
        inputelems.GetElementsByName("subject")[0].SetAttribute("value", Date);

        doc.GetElementById("text_editor_textarea").SetAttribute("value", Games);

        HtmlElementCollection inputbutton = doc.GetElementsByTagName("input");
        inputbutton.GetElementsByName("post")[0].Focus();
        SendKeys.Send("{ENTER}");
    }

And here's the HTML source code : 这是HTML源代码:

    </head><body background="https://i39.servimg.com/u/f39/17/72/44/45/backgr10.jpg" bgcolor="#ffffff" text="#000000" link="#000000" vlink="#000000"><a name="top"></a><table class="bodylinewidth" width="80%" cellspacing="0" cellpadding="10" border="0" align="center"><tr><td class="bodyline"><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td align="center" width="100%" valign="middle"><a href="/"><img src="https://i58.servimg.com/u/f58/17/72/44/45/ovechk14.jpg" id="i_logo" border="0" alt="Crazy Hockey League" vspace="1" /></a><br /><div class="maintitle">Crazy Hockey League</div><br /><span class="gen">CHL Franchise™.<br />&nbsp; </span></td></tr></table><table cellspacing="0" cellpadding="0" border="0" align="center"><tr><td align="center"><a class="mainmenu" href="/"><img id="i_icon_mini_index" src="https://i38.servimg.com/u/f38/17/18/20/77/home15.png" border="0"  hspace="0" alt="Accueil" title="Accueil" /></a><a class="mainmenu" href="/calendar"><img id="i_icon_mini_calendar" src="https://illiweb.com/fa/empty.gif" border="0"  hspace="0" alt="Calendrier" title="Calendrier" /></a><a class="mainmenu" href="/faq"><img id="i_icon_mini_faq" src="https://illiweb.com/fa/empty.gif" border="0"  hspace="0" alt="FAQ" title="FAQ" /></a><a class="mainmenu" href="/memberlist"><img id="i_icon_mini_members" src="https://i38.servimg.com/u/f38/17/18/20/77/membre12.png" border="0"  hspace="0" alt="Membres" title="Membres" /></a><a class="mainmenu" href="/groups"><img id="i_icon_mini_groups" src="https://i38.servimg.com/u/f38/17/18/20/77/groupe11.png" border="0"  hspace="0" alt="Groupes" title="Groupes" /></a><a class="mainmenu" href="/profile?mode=editprofile"><img id="i_icon_mini_profile" src="https://i38.servimg.com/u/f38/17/18/20/77/profil11.png" border="0"  hspace="0" alt="Profil" title="Profil" /></a><a class="mainmenu" href="/privmsg?folder=inbox" rel="nofollow"><img id="i_icon_mini_message" src="https://i38.servimg.com/u/f38/17/18/20/77/mp11.png" border="0"  hspace="0" alt="Messagerie" title="Messagerie" /></a><a class="mainmenu" href="/login?logout=1&amp;tid=0162d102f01a1c63d64d8d517645b5ae&amp;key=7a24f2" rel="nofollow" id="logout" ><img id="i_icon_mini_logout" src="https://i38.servimg.com/u/f38/17/18/20/77/off11.png" border="0"  hspace="0" alt="Déconnexion [ Ogie ]" title="Déconnexion [ Ogie ]" /></a></td></tr></table><div style="clear: both;"></div><div id="page-body"><div id="emptyidcc" class="no-left"><table cellpadding="0" cellspacing="0" width="100%" class="three-col"><tbody><tr><td valign="top" width="0"><div id="emptyidleft"></div></td><td valign="top" width="100%"><div class='n99fdc1'><script src="https://partner.googleadservices.com/gampad/google_service.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
    GS_googleAddAdSenseService("ca-pub-0339214227387817");    GS_googleEnableAllServices();//]]>
</script><script type="text/javascript">//<![CDATA[
    GA_googleAddAttr("Ad_type", "text");    GA_googleAddAttr("User_type", "Regular_user");GA_googleAddAttr("Page_type", "Other_page");GA_googleAddAttr("Site_type", "Premium");GA_googleAddAttr("Gender", "Male");GA_googleAddAttr("AgeRange", "18-24");//]]>
</script><script type="text/javascript">//<![CDATA[
    google_ad_slot="1505882794";    google_ad_channel="2442858061+9170118551+4515235772+8811049474+2562183790+8771478709+2207379944+8003782320";    google_ad_type="text";    google_color_border="ffffff";    google_color_link="000000";    google_color_bg="ffffff";    google_color_text="000000";    google_color_url="ffffff";    google_ui_features="rc:6";    google_font="Arial";    google_font_size="Small";    google_alternate_ad_url="https://www.adstune.com/personal_ads/?bg_color=ffffff&amp;body_link=000000&amp;text_color=000000&amp;url_color=000000&amp;dateid=749406&amp;lang=fr&amp;cat=369&amp;force=1&amp;flang=fr";    GA_googleAddAdSenseSlotAttr("728x90-top", "google_ad_slot", google_ad_slot);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_ad_channel", google_ad_channel);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_ad_type", "text");    GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_border", google_color_border);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_link", google_color_link);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_bg", google_color_bg);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_text", google_color_text);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_color_url", google_color_url);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_ui_features", google_ui_features);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_font", google_font);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_font_size", google_font_size);    GA_googleAddAdSenseSlotAttr("728x90-top", "google_alternate_ad_url", google_alternate_ad_url);//]]>
</script><script type="text/javascript">//<![CDATA[
    GA_googleUseIframeRendering();//]]>
</script><script type='text/javascript'>//<![CDATA[
GA_googleFillSlotWithSize("ca-pub-0339214227387817", "728x90-top", 728, 90);//]]>
</script><br class="clear" /></div><div style="clear:both;"></div><style type="text/css">html body .n99fdc1,html body .n99fdc1 iframe,html body iframe[name="google_ads_frame"],html body .n99fdc1 iframe[name="google_ads_frame"],html body #wrap #page-body div.n99fdc1,html body #page-body .n99fdc1,html body div.n99fdc1{display:block!important;visibility:visible!important;float:none!important;left:inherit!important;top:inherit!important;right:inherit!important;bottom:inherit!important;margin:0 auto!important;filter:alpha(opacity=100)!important;-moz-opacity:1!important;-khtml-opacity:1!important;opacity:1!important;z-index:9999!important;text-align:center!important}html body .n99fdc1,html body .n99fdc1 iframe[name="google_ads_frame"]{width:728px!important;height:90px!important;min-height:90px!important}html body .n99fdc1 iframe{border:0px!important}html body iframe[name="google_ads_frame"]{width:100%!important;height:inherit!important;min-height:inherit!important}</style><div style="height:3px"></div><script src="https://illiweb.com/rsc/16/frm/extendedview.js" type="text/javascript"></script><form action="/post" method="post" name="post" enctype="multipart/form-data"><table width="100%" border="0" cellspacing="2" cellpadding="0" align="center"><tr><td><span class="nav"><a class="nav" href="/">Crazy Hockey League</a>&nbsp;&nbsp;::&nbsp;<h1><a href="/c7-chl-simulation" class="nav"><span>CHL | Simulation</span></a></h1>&nbsp;::&nbsp;<h1><a href="/f29-resultats" class="nav"><span>Résultats</span></a></h1></span></td></tr></table><table class="forumline" width="100%" border="0" cellspacing="1" cellpadding="0"><tr><th height="28" class="thHead" colspan="2" valign="bottom"><strong>Poster un nouveau sujet</strong></th></tr><tr><td class="row1" width="22%"><span class="gen"><b>Titre du sujet</b></span></td><td class="row2" width="78%"><span class="gen"><input class="post" style="width:450px" type="text" name="subject" value="" size="45" maxlength="255" tabindex="2" title="La longueur du titre de ce sujet doit être comprise entre 1 et 255 caractères" onkeypress="if (event.keyCode==13){return false}" /><script type="text/javascript">//<![CDATA[
input = document.getElementsByName('subject');//]]></script><select name="topic_color" onchange="input[0].style.color = topic_color.value" style="margin-left:10px"><option value="#660000" style="color:#660000;" >Rouge foncé</option><option value="#FF0000" style="color:#FF0000;" >Rouge</option><option value="#FF9933" style="color:#FF9933;" >Orange</option><option value="#663300" style="color:#663300;" >Marron</option><option value="#FFFF00" style="color:#FFFF00;" >Jaune</option><option value="#006600" style="color:#006600;" >Vert</option><option value="#666633" style="color:#666633;" >Olive</option><option value="#00FFFF" style="color:#00FFFF;" >Cyan</option><option value="#0000FF" style="color:#0000FF;" >Bleu</option><option value="#000099" style="color:#000099;" >Bleu foncé</option><option value="#6600FF" style="color:#6600FF;" >Indigo</option><option value="#999999" style="color:#999999;" >Gris</option><option value="#FFFFFF" style="color:#CCCCCC;" >Blanc</option><option value="#000000" style="color:#000000;" >Noir</option><option value="" style="color:;" selected="selected">Aucune</option></select><script type="text/javascript">//<![CDATA[
input[0].style.color = '';//]]></script></span></td></tr><tr><td class="row1" width="22%"><span class="gen"><b>Description</b></span></td><td class="row2" width="78%"><span class="gen"><input class="post" style="width:450px" type="text" name="description" value="" maxlength="255" onkeypress="if (event.keyCode==13){return false}" /></span></td></tr><tr id="parent_editor_simple" ><td class="row1" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="1"><tr><td><span class="gen" style="white-space: nowrap;"><b>Corps du message</b></span></td></tr><tr><td align="center" valign="middle"><table width="100%" border="0" cellspacing="0" cellpadding="5"><tr align="center"><td class="gensmall" colspan=""><div id="smileyContainer"><script type="text/javascript">function addSmileyPane() { $("#smileyContainer").html('<iframe name="smilies" src="/smilies.forum?mode=smilies_frame&amp;t=1509143808" frameborder="0" scrolling="auto" marginwidth="0" marginheight="0" height="350" width="220" class="row1"></iframe>'); }</script></div></td></tr></table></td></tr></table></td><td class="row2" valign="top"><span class="genmed"></span><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td valign="top"><textarea id="text_editor_textarea" class="post" name="message" tabindex="3" wrap="virtual"></textarea>&nbsp;</td><td id="smileyContainer" valign="top"><script type="text/javascript">function addSmileyPane() { $("#smileyContainer").html('<iframe name="smilies" src="/smilies.forum?mode=smilies_frame&amp;t=1509143808" frameborder="0" scrolling="auto" marginwidth="0" marginheight="0" height="350" width="220" class="row1"></iframe>'); }</script></td></tr></table></td></tr></table><table class="forumline" width="100%" border="0" cellspacing="1" cellpadding="0"><tr><td class="catBottom" colspan="2" align="center" height="28"><input type="hidden" name="lt" value="0" /><input type="hidden" name="auth[]" value="c1900dead7de9ece4c5a991c880e82f0" /><input type="hidden" name="auth[]" value="1233e4038430dbd924cc1448d5f042f3" /><input type="hidden" name="mode" value="newtopic" /><input type="hidden" name="f" value="29" /><input class="liteoption" type="submit" name="preview" value="Prévisualiser" tabindex="5" />&nbsp;&nbsp;<input class="mainoption" type="submit" name="post" value="Envoyer" tabindex="6" accesskey="s" /></td></tr></table><br /><br />

So the problem is that the DocumentCompleted/PostGame() function have to be called 4 times before performing the post. 因此,问题在于在执行发布之前,必须将DocumentCompleted / PostGame()函数调用4次。

1st turn : When it meets this line, it throws an exception 第一回合:当它遇到这条线时,会引发异常

    inputelems.GetElementsByName("subject")[0].SetAttribute("value", Date);

    System.ArgumentOutOfRangeException: Value of '0' is not valid for 
    'index'. 'index' should be between 0 and -1.
    Parameter name: index

2nd turn : Same thing as 1st turn happens 第二回合:发生与第一回合相同的事情

3rd turn : Goes through all the PostGame() function, but doesn't post on the forum. 第三回合:浏览所有PostGame()函数,但不发布在论坛上。 (This part of code doesn't seem to toggle well) (这部分代码似乎切换得不好)

    HtmlElementCollection inputbutton = doc.GetElementsByTagName("input");
    inputbutton.GetElementsByName("post")[0].Focus();
    SendKeys.Send("{ENTER}");

4th turn : Goes through all the PostGame() function and posts on the forum properly. 第四回合:遍历所有PostGame()函数并在论坛上正确张贴。

I'm all new to this... I've tried to Debug and find the issue(s) for over 3 hours and couldn't find it/them... Please help me !!! 我是这个新手...我尝试调试并发现问题3个多小时,但找不到它/他们...请帮助我!

Thanks guys ! 多谢你们 !

You didn't post your full HTML, but I can tell that it contains some iframe s. 您没有发布完整的HTML,但是我可以说它包含一些iframe The DocumentCompleted is invoked when - surprise - the document has finished loading. 当-意外-文档完成加载时,将调用DocumentCompleted

But if you have multiple iframe s in the HTML, then you have multiple documents. 但是,如果HTML中有多个iframe ,那么您将有多个文档。

So it will be invoked multiple times when each iframe finished loading the document it's pointing to. 因此,当每个iframe完成加载指向的文档时,它将被多次调用。

You can check the Url property of the WebBrowserDocumentCompletedEventArgs parameter in the event handler to see which document loaded. 您可以在事件处理程序中检查WebBrowserDocumentCompletedEventArgs参数的Url属性,以查看加载了哪个文档。 If you only want to handle the main page load, you should be able to do it with: 如果您只想处理主页加载,则应该可以执行以下操作:

private void OnWebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var webBrowser = (WebBrowser)sender;

    if (e.Url == webBrowser.Url)
    {
        // main page loaded
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM