teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

InvokeScriptについて追記

2016/05/05 00:31

投稿

tkanda
tkanda

スコア2425

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  WebBrowserコントロール内のHTML/JavaScriptにC#から値を渡す場合、次の3つの方法が考えられます。
2
2
 
3
- 0. WebBrowser.Document プロパティを通じてHTMLDOMツリーにアクセスし、目的のDOM要素を書き換える。JavaScriptによるDOM操作時と同様に、WebBrowser.Document.GetElementById() で目的のDOM要素を取得し、HTMLElement.innerHtml を書き換える、といった操作が可能です。
3
+ 0. WebBrowser.Document プロパティを通じてHTMLDOMツリーにアクセスし、目的のDOM要素を書き換える。JavaScriptによるDOM操作時と同様に、WebBrowser.Document.GetElementById() で目的のDOM要素を取得し、HTMLElement.innerHtml を書き換える、あるいはWebBrowser.Document.InvokeScript() によりJavaScriptコードを実行、その際functionにパラメーター文字列を与えて呼び出す、といった操作が可能です。
4
4
  0. WebBrowser.DocumentStream または WebBrowser.DocumentText にHTML全文をテキストとして与える。この場合、C#の変数値等は、HTMLテキストの組み立て処理などで組み込んでやることができます。
5
5
  0. WebBrowser.ObjectForScript(HTML側からは window.external という特殊オブジェクトで参照できる) を通じてHTML側の要素やJavaScriptとC#コード間で通信し、必要な情報をやりとりする。
6
6