Не скрывайте!
Я не смог найти правильный ответ на этот вопрос, несмотря на то, что на некоторых форумах тема открыта годами.
Однако яобнаружил, что не скрывая inappbrowser частично излечивает эту проблему.И я смог ввести спиннер в браузер приложений, чтобы улучшить взаимодействие с пользователем, избегая неудобного белого экрана.
Пользовательский счетчик
у следующего решения есть много альтернатив, одинможно использовать html-файл «spinner.html» вместо жесткого кодирования, но этот конкретный подход работает на разных платформах (nexus 5, pixel 1/2, iphone 6,7)
//use some really slow page for testing
var path="https://www.facebook.com/";
//if you have a spinner.html, you can load that instead of path here in inappbrowser, but make sure it works in all devices.
var ref = cordova.InAppBrowser.open(path, '_blank', 'toolbarposition=top,closebuttoncaption=Back,location=no,hardwareback=no');
//spinner html
var spinner ="<!DOCTYPE html><html><head><meta name='viewport' content='width=device-width,height=device-height,initial-scale=1'><style>.loader {position: absolute; margin-left: -2em; left: 50%; top: 50%; margin-top: -2em; border: 5px solid #f3f3f3; border-radius: 50%; border-top: 5px solid #3498db; width: 50px; height: 50px; -webkit-animation: spin 1.5s linear infinite; animation: spin 1.5s linear infinite;}@-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); }}@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform:rotate(360deg); }}</style></head><body><div class='loader'></div></body></html>";
//intended webpage is loaded here (facebook)
ref.executeScript({code: "(function() {document.write(\""+spinner+"\");window.location.href='"+path+"';})()"});
//loadstop event
ref.addEventListener('loadstart', function(event) {
//nothing specific needed for spinner
});
//loadstop event
ref.addEventListener('loadstop', function(event) {
//nothing specific needed for spinner
});
spinner будетперезаписывается реальной страницей после начала загрузки.