window.close () не работает в BrowserComponent CodeName One - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть приложение CodeName One, в котором я использую BrowserComponent для загрузки HTML-страницы. Эта HTML-страница (HTMLPage1) дополнительно открывает другую HTML-страницу (HTMLPage2) одним нажатием кнопки, используя window.open(). Это работает правильно в приложении. Этот HTMLPage2 имеет кнопку Закрыть, и при нажатии этой кнопки HTMLPage2 должен быть закрыт, а элемент управления должен вернуться к HTMLPage1. Тем не менее, это не работает, как ожидалось. При нажатии кнопки «Закрыть» в приложении ничего не происходит, а HTMLPage2 по-прежнему отображается в приложении. Я попытался использовать window.close () и self.close (), и ни один из них не работает.

Я нашел следующую статью о поиске Android Webview: скрипты могут закрывать только те окна, которые были им открыты , что похоже на проблему, с которой я сталкиваюсь

Кроме того, у меня на мобильном телефоне есть приложение для тестирования WebView (его можно найти в PlayStore - поиск com.snc.test.WebView Test), которое позволяет мне изменять настройки WebView и запускать различные URL-адреса. Я использовал это приложение, чтобы проверить, могу ли я успешно вызывать свои HTML-страницы через приложение WebView Test. С настройками по умолчанию я столкнулся с той же проблемой, что и описанная выше. Кнопка Закрыть не работает. Однако затем я изменил свойство setSupportMultipleWindows() в приложении и установил для него значение true. После этого он корректно работал через приложение WebView Test. При нажатии кнопки «Закрыть» в HTMLPage2 эта страница была закрыта, и я снова мог видеть HTMLPage1.

Итак, я попытался проверить, как установить это свойство в CodeName One. Я обнаружил, что BrowserComponent.setProperty("SupportMultipleWindows", "true") должен быть в состоянии сделать то же самое. Когда я установил это свойство и протестировал приложение, оно все равно не работало. Потом я просмотрел документацию
WebSettings.setSupportMultipleWindows

Согласно этой документации, если установлено значение true, хост-приложение должно реализовывать WebChromeClient.onCreateWindow(WebView, boolean, boolean, Message). Я не смог найти способ сделать это через CodeName One.

Я иду по правильному пути, чтобы решить эту проблему? Если нет, то, пожалуйста, направь меня.

...