■68059 / inTopicNo.15) |
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.
|
|