■101113 / inTopicNo.11) |
Re[6]: webView2を使いtextBoxの変数をname属性へ |
□投稿者/ 魔界の仮面弁士 (3527回)-(2023/01/07(Sat) 12:20:27)
|
■No101110 (魔界の仮面弁士) に追記 > string escText = rawText.Replace("'", "\\'");
別案として、AddHostObjectToScript メソッドを使った実装例を書いてみます。
このメソッドを通じて公開したオブジェクトは、JavaScript 側から chrome.webview.hostObjects のメンバーとして公開されるので、 C# と JavaScript の間で、プロパティやメソッドとしてデータ交換ができます。
これなら、Replace などによる文字列のエスケープ処理を意識する必要もありません。
public partial class Form1 : Form { public Form1() { InitializeComponent(); InitializeAsync(); }
private Example sendmsg; async void InitializeAsync() { await webView21.EnsureCoreWebView2Async(null); sendmsg = new Example { txt = textBox1 }; webView21.CoreWebView2.NavigationCompleted += (sender, e) => { webView21.CoreWebView2.AddHostObjectToScript("sendmsg", sendmsg); }; webView21.CoreWebView2.Navigate("https://www.yahoo.co.jp/"); }
private async void button1_Click(object sender, EventArgs e) { await webView21.ExecuteScriptAsync("(async()=>document.getElementsByName('p')[0].value=await chrome.webview.hostObjects.sendmsg.GetText())();"); }
[ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] public class Example { public TextBox txt { get; internal set; } public string GetText() => txt.Text; } }
|
|