Почему не работает UWP WebView AddWebAllowedObject? - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь использовать метод WebView AddWebAllowedObject, но во время выполнения возвращается ошибка, когда вызывается функция, которая его использует. Я делаю что-то неправильно? Заранее благодарим.

Примечания. Класс Dial содержится в рабочем проекте.

    [AllowForWeb]
    public sealed class Dial
    {
        public void Greet()
        {
            Debug.WriteLine("Hello!");
        }
    }
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void WebView_Loaded(object sender, RoutedEventArgs e)
        {
            wv.NavigateToString("" +
                "<html>" +
                "<head>" +
                "<script>function hi() { dial.Greet(); }</script>" +
                "</head>" +
                "<body>" +
                "</body>" +
                "</html>"
            );
        }

        private void WebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
        {
            wv.AddWebAllowedObject("dial", new Dial());
        }

        private async void WebView_DOMContentLoaded(WebView sender, WebViewNavigationStartingEventArgs args)
        {
            await wv.InvokeScriptAsync("hi", new string[] {}); // Error 0x80020101
        }
    }

1 Ответ

1 голос
/ 03 августа 2020

При тестировании вам необходимо вызвать метод Greet () класса Dial в нижнем регистре в вашем html содержимом, как в этом документе .

private void WebView_Loaded(object sender, RoutedEventArgs e)
{
    wv.NavigateToString("" +
        "<html>" +
        "<head>" +
        "<script>function hi() { dial.greet(); }</script>" +
        "</head>" +
        "<body>" +
        "</body>" +
        "</html>"
    );
}
...