像很多人一样,我正在开发一个简单的 Android 应用程序,它只是一个Web 视图,可以打开我的完整响应式网站,只是为了允许找到它、安装它并像“真正的”应用程序一样启动它(我知道你知道为什么我正在这样做!)。我的网站使用CKEditor允许用户创建简单的 html 页面并上传他们的图像以放入他们的页面中。为此,我使用带有 CKEditor 的响应式文件管理器,如果我从 Chrome 或手机上的其他浏览器(Android 9)打开我的网站,一切正常。但是当我启动我的 Web 应用程序时,即使 90% 的网站运行良好,我在日志中也会出现几个 Javascript 错误,例如:
I/chromium: [INFO:CONSOLE(305)] "Uncaught TypeError: $(...).fancybox is not a function"
I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'tools' of undefined" (it refers to this source code --> window.opener.CKEDITOR.tools.callFunction(a, e) )
当我尝试使用“上传图像”或“选择图像”功能时,由于上述 Javascript 错误,它不起作用(当我单击操作按钮时它什么也不做)。
正如其他类似问题中所建议的那样,我已经启用了 Javascript、dom 存储以及使用 webview 设置访问所有文件和文档,但对我没有任何帮助。
我的超级简单的安卓应用:
public class MainActivity extends Activity {
private WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
mWebView = new WebView(this);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient());
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAllowContentAccess(true);
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setBlockNetworkLoads(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(false);
webSettings.setDomStorageEnabled(true);
webSettings.setDatabaseEnabled(true);
mWebView.loadUrl("https://www.responsivefilemanager.com/demo.php");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
this.setContentView(mWebView);
}
}