viewer.js вызывает событие "fail" в Android WebView

В настоящее время я пытаюсь заставить пример HTML5 viewer.js работать в Android WebView.

Инициализация WebView выглядит следующим образом:

webView.setWebViewClient(new WebViewClient());
final WebSettings webSettings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/index.html");

Дело в том, что в Nexus 7 под управлением Android 4.3 JB (который использует Chrome в качестве стандартного браузера) пример терпит неудачу и отображает: Ошибка загрузки метаданных документа (вы проверили URL?). Я также попробовал Samsung Galaxy Nexus под управлением 4.2 с такими же результатами.

Но на GBox (MediaBox, Android TV) под управлением Android 4.0.4 ICS (который использует приложение браузера по умолчанию) требуется некоторое время, но он отображает документ. С большим количеством стилей проблем, но он может сделать это.

Однако, если я обслуживаю все ресурсы с удаленного сервера (например, Python SimpleHttpServer) и загружаю WebView, используя URL страницы индекса, у него не возникает проблем ни на одном устройстве.

Это специфическая проблема Crocodoc View API в отношении кросс-браузинга?

1 ответ

Решение

Это специфичная для Chrome проблема, см. Здесь: Проблемы с jQuery getJSON при использовании локальных файлов в Chrome

Таким образом, модель безопасности Chrome блокирует запросы AJAX от file:/// URL-адрес. Это создает проблемы для viewer.js, поскольку он использует AJAX для загрузки ресурсов оптимизированным способом. Рекомендуемое решение - всегда обслуживать активы через веб-сервер.

Другие вопросы по тегам