1

WebBrowser コントロールでこの JavaScript コードを実行するには、本当に助けが必要です。Web サイトでは、次のように実行されます。

"javascript:setTimeout('__doPostBack(\'dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995\',\'\')', 0)"

私は多くのことを試しましたが、次のようなものです:

webBrowser1.Navigate("javascript:setTimeout('__doPostBack(\'dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995\',\'\')', 0)");

しかし、それは機能していません。

誰か提案はありますか?

編集:

これも試しました:

HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
            HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
            IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
            element.text = "function __doPostBack(eventTarget, eventArgument)";
            head.AppendChild(scriptEl);
            webBrowser1.Document.InvokeScript("__doPostBack(\'dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995\',\'\'");

JS 例外が発生します。

ここに画像の説明を入力

EDIT2:

私もやった:

string sa = @"function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}";

element.text = s;

しかし、何も起こらず、JS が実行されます。

EDIT3:

また試した

webBrowser1.Document.InvokeScript(@"__doPostBack(\'dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995\',\'\'");

しかし、何も起こりません。ブラウザは更新されるはずです。ブラウザからのコードは次のとおりです。

<select name="dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995" onchange="javascript:setTimeout('__doPostBack(\'dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995\',\'\')', 0)" id="dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995" class="dropdown" pid="as2ba2d5-d2cc-dad2-9e35-abd345678aac">
                <option value="1 (1)">1</option>
                <option value="2 (2)">2</option>
                <option value="3 (3)">3</option>

            </select>
4

2 に答える 2

0

私はあなたが欲しいと思います:

string javascriptDoPostBack = @"function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}";

HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
element.text = javascriptDoPostBack;
head.AppendChild(scriptEl);

webBrowser1.Document.InvokeScript("__doPostBack('dsl50$ct160$g_818f5662_1255_51ab_d4e1_6bse0453e306$ba400$rdProcess$ucTopQuestions$qst_1995','');");
于 2013-06-23T08:56:38.570 に答える
0

このリンクを確認してください:

WebBrowser コントロールに Javascript を挿入する方法は?

コード:

    HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
    HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
    element.text = "function sayHello() { alert('hello') }";
    head.AppendChild(scriptEl);
    webBrowser1.Document.InvokeScript("sayHello");
于 2013-06-21T13:32:06.747 に答える