UWP - WebView - угловая инъекция JS - PullRequest
0 голосов
/ 27 августа 2018

В настоящее время я работаю над приложением UWP, разработанным для Windows 10. Я использую WebView Control для отображения сторонней HTML-страницы. HTML был разработан с использованием Angular JS.

Проблема: на веб-странице есть функция ng-click = c.open();

Я хочу переопределить эту функцию, используя JavaScript / угловую инъекцию через мой код C # и добавив window.external.notify(), чтобы при нажатии кнопки на веб-странице веб-представление UWP получало уведомление через ScriptNotify() event .

Я новичок в javascript и angular, любые указатели и указания будут очень полезны.

 WebView.InvokeScriptAsync("eval", new[]
                                           {
                                                   @"(function(){
                                                       var hyperlinks = document.getElementsByClassName('btn');                                        
                                                        for(var i = 0; i < hyperlinks.length; i++)
                                                        {                                                           
                                                            **//What should i place here to override the btn ng-click fucntion??**
                                                        }
                                                    })()"

                                           });

1 Ответ

0 голосов
/ 29 августа 2018

Элемент управления WebView для отображения сторонней HTML-страницы.

По вашему требованию вы можете добавить функцию eval с помощью InvokeScriptAsync и переопределить обработчик событий btn onclick. Но вы не можете обработать angular $scope внутри функции eval, потому что он заблокирован в javaScript. Даже если бы вы могли получить объект кнопки и добавить новый обработчик четности, ng-click все еще существует в списке функций кнопки. ниже рассказано, как внедрить eval и получить элемент html с идентификатором.

await MyWeb.InvokeScriptAsync("eval", new[]
{
       @"(function(){                                          
         document.getElementById('btn').onclick = function () {
                    this.innerHTML = 'hello'                   
                }
        })()"

});

И вы можете добавить window.external.notify() в вышеприведенном методе, но вы не можете использовать $scope значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...