我有使用 Chromium 的 Win Forms 應(yīng)用程序。我的目標(biāo)是獲取字符串變量 (json),它是在 C# 領(lǐng)域生成的,用于 javascript 函數(shù)。我無(wú)法在 javascript-land 得到它。我在 JSObj.cs 中創(chuàng)建了 mefod getJSON() - 它生成了 json。我從方法中看到了字符串。我在 Form1.cs 注冊(cè)了 oblect JSObj(這里我有 Chromium)。我用按鈕從 html 調(diào)用了 JSObj.getJSON(),但我沒有在 javascript 代碼中調(diào)用 json!<button class="btn btn-info" id="btn3">Test Winform Interaction</button>$("#btn3").on('click', function () { alert(jSObject.getJSON()[0]); });public string getJSON() { DispHandler hand = new DispHandler(delegate { string directoryPath = @"C:\"; List<SObject> sendObjects = new List<SObject>(); DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath); FileInfo[] filesArray = directoryInfo.GetFiles(); foreach (var el in filesArray) { sendObjects.Add(new SObject(el.Name, directoryPath)); } string json = JsonConvert.SerializeObject(sendObjects); return json; }); IAsyncResult resultObj = hand.BeginInvoke(null, null); var res = hand.EndInvoke(resultObj); return res; }public Form1() { InitializeComponent(); InitializeChromium(); _browser.RegisterAsyncJsObject("jSObject", new JSObj()); }沒有錯(cuò)誤。我希望在 javascript-land 中獲取 json 數(shù)據(jù)。
1 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
C# 和 CEF 之間的通信是異步的,jSObject.getJSON() 返回對(duì)結(jié)果的 Promise,而不是結(jié)果本身。試試這個(gè) JS 代碼:
$("#btn3").on('click', function () { jSObject.getJSON().then(function (r) { alert(r[0]); }); });
- 1 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報(bào)
0/150
提交
取消