4

像很多人一样,我正在开发一个简单的 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 错误,它不起作用(当我单击操作按钮时它什么也不做)。

正如其他类似问题中所建议的那样,我已经启用了 Javascriptdom 存储以及使用 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);
    }
}
4

0 回答 0