H5網頁放一個登陸按鈕,angularjs中
$scope.login = function () {
window['wpfToAngularObj'].angularToWPF('123');
}
wpf#
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
webView.JavascriptObjectRepository.Register("boundAsync", new WPFAngularObj(), isAsync: true, options: BindingOptions.DefaultBinder);
webView.Address = "http://localhost:8999/home.html#/login";
public class WPFAngularObj
{
public void angularToWPF(string msg)
{
MessageBox.Show(msg);
}
}
一直無法呼叫到wpf的方法。CefSharp提示Cannot read property 'angularToWPF' of undefined 找不到angularToWPF
uj5u.com熱心網友回復:
生活簡單,代碼簡單點也許你更快樂wpf里嵌入一個websocket 服務端,就可以了。各做各的,
不要想你插入我的代碼,我插入你的代碼。那樣你會很不快樂的
uj5u.com熱心網友回復:
不想找啥嚴謹的代碼,隨手百度一下,隨手點開一篇,代碼不復雜,是那個意思,至少沒啥明顯毛病https://blog.csdn.net/glmushroom/article/details/107859484
uj5u.com熱心網友回復:
wpf程式需要安裝在多臺工控機上,socket不可取uj5u.com熱心網友回復:
既然用了CefSharp,那就是前端是前端的事,后臺是后臺的事了,可以把websocket看成兩個互不相干的行程通信。uj5u.com熱心網友回復:
wpf的CefSharp內有web頁面,頁面上幾個按鈕控制工控機的幾個按鈕,所以wpf在工控機需要modbus通訊,總不能每次安裝都要設定一邊socket的服務IP吧,uj5u.com熱心網友回復:
自己頂,別沉了,在線等uj5u.com熱心網友回復:
明顯沒索引到window['wpfToAngularObj']啊,注冊的名稱,跟這個索引鍵不一致。uj5u.com熱心網友回復:
額
1.是websocket,不是socket
2.是本機回環地址127.0.0.1,不是網路地址(這玩意連網卡都不走,應該直接走管道或者pci 總線訊息了)
你不用糾結,文章是2020年的,不是你看的5,6年前的。這東西你不用,Google都用。現在做自動化網頁測驗的google兩款工具,其實就是websocket和無頭協議控制,不然想你這樣來回注入對方腳本,玩自動化測驗的兄弟還不得天天加班哦
uj5u.com熱心網友回復:
你只需要開服務的約定好埠號和你們需要交換的資料通訊協議格式就成了現在你不用管aue,angrljs那邊了,他們自己就能搞定。你不過是那cef顯示。
當然你用Cef本地檔案系統承載,可以。其實把很多情況是我們直接用owin self host直接內置一個本地web,所以你的什么asp mvc webapi都可以直接用上(當然現在是owin +asp.net mvc core)那么你其實根本就不需要關注wpf部分,那就是殼子只是外套,本質上他就是個網站開發
uj5u.com熱心網友回復:
這套玩意對nodejs開發的也是一樣的,那是用啥winform,wpf,qt操作頁面哦。他們就是開發一個網站,用npm啟動一個內置本地網站。用cef展示而已
uj5u.com熱心網友回復:
TypeError: window.sayChart.sayChart is not a functionjs:$scope.login = function () {
//window.external.ShowMsg("123123123");
window['sayChart'].sayChart("11123123123");};
wpf:
webView.JavascriptObjectRepository.Register("sayChart", new CallbackObjectForJs(), isAsync: false, options: BindingOptions.DefaultBinder);
webView.Address = "http://localhost:8999/home.html#/login";
public class CallbackObjectForJs
{
public string name = "";
//方法可有回傳值
public object getChartData(string table)
{
return new List<string> { "a", "b", "c" };
}
//方法可沒回傳值
public void sayChart(string str)
{
System.Windows.MessageBox.Show(str);
}
}
依然無法呼叫到wpf的方法。
uj5u.com熱心網友回復:
我同事剛剛接觸angularJS,現在讓他們弄angularJS的websocket,有些難度,程式整體架構就是h5+angularJS,需要在工控機打開頁面并且通過modbus控制工控機上的五色燈。所以采用wpf+CefSharpuj5u.com熱心網友回復:
js設定斷點看 window['sayChart']一直是undefined,導致wpf函式根本無法訪問到uj5u.com熱心網友回復:
整個 h5 開發可以使用 c# 而不是 js。微軟已經正式發布了 .net 5,你可以放心使用 webassembly,用 .net standard 框架和 c# 撰寫網頁,用 blazor (或者你可以參考一下 blazor 編譯成的 dll 可通過 nuget 發布的網頁控制元件原始源代碼)來設計和系結模板。注意,不用 js。
uj5u.com熱心網友回復:
使用 c# 加上一些 html+css 知識,你可以使用 .net 中的知識,例如 linq 等等傳統,和 ClientWebSocket 等等 .net 5 新加入的標準庫。uj5u.com熱心網友回復:
web和 wcf 都是客戶端,你應該自己設計一個“服務器”軟體,網頁通過websocket 連服務器,wpf可以通過tcp連服務器。并且控制流程以服務器為核心。
uj5u.com熱心網友回復:
如此試試:
window.sayChart.sayChart("11123123123");
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/224665.html
標籤:C#
下一篇:.net core的一個錯誤
