C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 116 を表示中)
■68059 / )  Re[8]: Confirmを強制的にOKにする方法がわかりません。
□投稿者/ PANG2 (6回)-(2013/09/19(Thu) 15:07:46)
> element.OuterHtml = element.OuterHtml.Replace("return confirm('これを適用します。よろしいですか?');", "");
> element.InvokeMember("click");

element.OuterHtml の値が変わらないのが不思議なので、調べてみました。

結論

element.OuterHtml に代入したとき、ブラウザ側では書き換えられているが、element変数の参照が無効になる。
elementのインスタンスを再取得する必要がある。

実験コード

private void button1_Click(object sender, EventArgs e)
{
HtmlElement element = webBrowser1.Document.All.GetElementsByName("name1")[0];
element.OuterHtml = element.OuterHtml.Replace("return confirm('これを適用します。よろしいですか?');", "");
element.InvokeMember("click"); // elementの参照が無効なので何も動作しない
}

private void button2_Click(object sender, EventArgs e)
{
HtmlElement element = webBrowser1.Document.All.GetElementsByName("name1")[0];
element.OuterHtml = element.OuterHtml.Replace("return confirm('これを適用します。よろしいですか?');", "");
element = webBrowser1.Document.All.GetElementsByName("name1")[0]; //インスタンスを再取得
element.InvokeMember("click");
}

参考

HtmlElement.OuterHtml Property
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.outerhtml(v=vs.80).aspx

> If you assign a new value to OuterHtml, the current element reference will become invalid;
> it will not reflect the name, properties and child content of the HTML you have just assigned.

返信 編集キー/


管理者用

- Child Tree -