0

原谅我的格式,因为这是我的第一篇文章。我一直在使用旧版应用程序,他们添加了一个新的 UI。这只是一个 POC,表明我们可以制作瘦客户端,并在线托管我们的项目。

我有一个带有 WebBrowser 用户控件的 WPF 窗口(.NET Framework 4.7.2)。我的网站有一个按钮window.external['HelloWorld']('Hello')(如下所示)

在本地调试时,交互按计划发生,但在部署时发生。我的本地 WPF 应用程序没有收到来自托管网站的任何内容。本地站点和部署站点都是 HTTPS

指向带有<script>标签的静态 HTML 网站也可以。

C#(WPF 类)

public partial class TestWindow : Window
    {
        public TestWindow()
        {
            InitializeComponent();
            
            webBrowser.Navigate(//insert Angular URL here);
            webBrowser.Loaded += webBrowser_Loaded;
        }
        
        void webBrowser_Loaded(object sender, RoutedEventArgs e)
        {
            webBrowser.ObjectForScripting = new ScriptingHelper();
        }
    }

C#(脚本对象)

[ComVisible(true)]
public class ScriptingHelper
{
        public void HelloWorld(string text)
        {
                MessageBox.Show(text);
        }
}

打字稿

onButtonClicked() {
        if (window.external && typeof window.external['HelloWorld'] !== 'undefined') {
                const helloText = "Hello from website";
                window.external['HelloWorld'](hellotext);
        }
}
4

1 回答 1

0

原来我的 window.external 语法不正确。虽然 window.external'comVisibleFunctionname' 在本地工作,但语法是 (window.external as any).HelloWorld()。它与我的 linter 争论,但我相信这是由于贬值

于 2020-06-26T15:39:28.353 回答