#xamarin #webview #uwp
Вопрос:
Я создал приложение UWP, в которое встроено веб-представление. Веб-представление загружается с URL-адресом веб-приложения. В веб-приложении к объекту окна добавлен объект JavaScript. пример:window.html_communicator
Веб-приложение использует этот объект html_communicator и вызывает на нем определенные методы для вызова обратных вызовов в приложении UWP.
например, в html_communicator может быть определен метод, называемый onLocationSelect, и веб-приложение вызовет этот метод при некотором взаимодействии с пользователем. Приложение UWP регистрируется в методах, вызывая addWebAllowedObject в веб-представлении.
Обратные вызовы работают нормально, когда я отключил собственную цепочку инструментов .Net. Но эти обратные вызовы не работают нормально, когда .Включена цепочка инструментов Net Natvie.
Ниже приведен фрагмент кода javascript, который вызывает метод моста при нажатии кнопки.
var html_communicator = html_communicator || {};
window.onload = function () {
document.getElementById("locationSelect")
.addEventListener("click", () => {
if (html_communicator amp;amp; html_communicator.onLocationSelect) {
document.getElementById("msg").innerHTML = `Successfully called bridge method: Button clicked at ${new Date()}`;
sumorea_app.onLocationSelect();
}
else {
document.getElementById("msg").innerHTML = `Failed to call bridge method: Button clicked at ${new Date()}`;
}
})
}
Комментарии:
1. Пожалуйста, обратитесь к документу здесь , единый идентификатор ресурса (URI) для доверенного контента должен быть добавлен в список разрешений в каталогах приложений приложения в Package.appxmanifest
Ответ №1:
Обратные вызовы работают нормально, когда я отключил собственную цепочку инструментов .Net. Но эти обратные вызовы не работают нормально, когда .Включена цепочка инструментов Net Natvie.
Пожалуйста, обратитесь к официальному документу WebView, Кроме того, доверенному содержимому JavaScript в WebView можно разрешить прямой доступ к Windows RuntimeAPI. Это обеспечивает мощные собственные возможности для веб-приложений, размещенных в WebView. Чтобы включить эту функцию, Единый идентификатор ресурса (URI) для доверенного содержимого должен быть добавлен в список разрешений в каталогах приложений приложения в Package.appxmanifest, при этом для WindowsRuntimeAccess специально установлено значение «все».
Для решения Xamarin вам нужно проверить, есть ли добавленный выше список разрешений для проекта UWP.
Комментарии:
1. Спасибо за ответ, В соответствии с вашими комментариями, WindowsRuntimeAccess был изменен на «все». После этого появились исключения во время загрузки webview. Необработанное исключение в 0x756C46D2 (KernelBase.dll) в App.exe: 0x40010004: Отладчик завершил процесс. Необработанное исключение при 0x756C46D2 в App.exe: Исключение Microsoft C : Js::Исключение JavascriptException в ячейке памяти 0x07C9E858. А также Непроверенный скрипт только в компиляторе (Параметры отладчика)