回答編集履歴

2

見直しキャンペーン中

2023/07/20 15:36

投稿

TN8001
TN8001

スコア9350

test CHANGED
@@ -1,12 +1,12 @@
1
1
  [How do you call a JavaScript method that returns a result?](https://github.com/cefsharp/CefSharp/wiki/General-Usage#2-how-do-you-call-a-javascript-method-that-returns-a-result)
2
2
 
3
3
  `EvaluateScriptAsync`は`Task<JavascriptResponse>`を返します。
4
- ```
4
+ ```cs
5
5
  Task<JavascriptResponse> task = browser.EvaluateScriptAsync(script);
6
6
  ```
7
7
 
8
8
  通常は`await`して`JavascriptResponse`を取得すればいいでしょう。
9
- ```
9
+ ```cs
10
10
  JavascriptResponse response = await browser.EvaluateScriptAsync(script);
11
11
  ```
12
12
 
@@ -15,7 +15,7 @@
15
15
 
16
16
  制限もあるようですので参考URLの前後もチェックしてください。
17
17
 
18
- ```C#
18
+ ```cs
19
19
  using System.Diagnostics;
20
20
  using System.Windows;
21
21
  using CefSharp;

1

元ドキュメント修正済み

2022/09/16 04:08

投稿

TN8001
TN8001

スコア9350

test CHANGED
@@ -1,141 +1,70 @@
1
1
  [How do you call a JavaScript method that returns a result?](https://github.com/cefsharp/CefSharp/wiki/General-Usage#2-how-do-you-call-a-javascript-method-that-returns-a-result)
2
2
 
3
- いきなり間違っていますがw
4
-
5
-
6
-
7
3
  `EvaluateScriptAsync`は`Task<JavascriptResponse>`を返します。
8
-
4
+ ```
5
+ Task<JavascriptResponse> task = browser.EvaluateScriptAsync(script);
9
6
  ```
10
7
 
8
+ 通常は`await`して`JavascriptResponse`を取得すればいいでしょう。
9
+ ```
11
- Task<JavascriptResponse> task = browser.EvaluateScriptAsync(script);
10
+ JavascriptResponse response = await browser.EvaluateScriptAsync(script);
12
-
13
11
  ```
14
12
 
15
-
16
-
17
- 通常は`await`して`JavascriptResponse`を取得すればいいでしょう。
18
-
19
- ```
20
-
21
- JavascriptResponse response = await browser.EvaluateScriptAsync(script);
22
-
23
- ```
24
-
25
-
26
-
27
13
  成功していれば`response.Success`が`true`です。
28
-
29
14
  戻り値は`response.Result`に`object`で入っています。キャストして使用してください。
30
-
31
-
32
15
 
33
16
  制限もあるようですので参考URLの前後もチェックしてください。
34
17
 
35
-
36
-
37
18
  ```C#
38
-
39
19
  using System.Diagnostics;
40
-
41
20
  using System.Windows;
42
-
43
21
  using CefSharp;
44
-
45
22
  using CefSharp.Wpf;
46
23
 
47
-
48
-
49
24
  namespace Questions244110
50
-
51
25
  {
52
-
53
26
  public partial class MainWindow : Window
54
-
55
27
  {
56
-
57
28
  private ChromiumWebBrowser chrome;
58
-
59
29
  public MainWindow()
60
-
61
30
  {
62
-
63
31
  InitializeComponent();
64
32
 
65
-
66
-
67
33
  chrome = new ChromiumWebBrowser { Address = "https://teratail.com/tags/WPF/new/1", };
68
-
69
34
  chrome.LoadingStateChanged += OnLoadingStateChanged;
70
-
71
35
  Content = chrome;
72
-
73
36
  }
74
37
 
75
-
76
-
77
38
  private async void OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
78
-
79
39
  {
80
-
81
40
  if(!e.IsLoading)
82
-
83
41
  {
84
-
85
42
  JavascriptResponse response = await chrome.EvaluateScriptAsync("1+2");
86
-
87
43
  Debug.WriteLine(response.Result); // 3
88
44
 
89
-
90
-
91
45
  response = await chrome.EvaluateScriptAsync("aaa");
92
-
93
46
  Debug.WriteLine(response.Success); // False
94
-
95
47
  Debug.WriteLine(response.Message); // ncaught ReferenceError: aaa is not defined
96
48
 
97
49
 
98
-
99
-
100
-
101
50
  string script = @"var bool = false;" +
102
-
103
51
  "if(document.body.innerHTML.includes('CefSharp')){" +
104
-
105
52
  "bool = true;" +
106
-
107
53
  "}" +
108
-
109
54
  "bool;";
110
-
111
55
  response = await chrome.EvaluateScriptAsync(script);
112
56
 
113
-
114
-
115
57
  if(response.Success)
116
-
117
58
  {
118
-
119
59
  string s = (bool)response.Result ? "ありました" : "ありませんでした";
120
-
121
60
  Debug.WriteLine($"CefSharpの質問が{s}");
122
-
123
61
  }
124
-
125
62
  else
126
-
127
63
  {
128
-
129
64
  Debug.WriteLine($"スクリプトエラー! {response.Message}");
130
-
131
65
  }
132
-
133
66
  }
134
-
135
67
  }
136
-
137
68
  }
138
-
139
69
  }
140
-
141
70
  ```