簡體   English   中英

Android:Web 應用程序適用於 Chrome,但不適用於 Webview

[英]Android: Web App Works in Chrome, but not Webview

我在我的網絡應用程序中使用ng-hideng-show來處理基於用戶登錄狀態顯示的內容。 如果我在手機上訪問 Chrome 瀏覽器並運行該站點,這完全正常。

但是,當我嘗試在我的應用程序或默認手機非 Chrome 瀏覽器的 web 視圖中顯示它時,它不起作用。 沒有任何內容被隱藏,綁定到 angularJS 函數的按鈕不起作用。 請注意,我確實設置了setJavaScriptEnabled(true)

當我查看這個問題時,我注意到某些 AngularJS 功能在某些瀏覽器(尤其是 IE)上不起作用,因此可能是 AngularJS 與默認的 Webview 不兼容。 那么是否有解決方法或某種方法可以讓 webview 模擬 Chrome 瀏覽器?

應用在Chrome瀏覽器: http://gyazo.com/8a8a56bdac1eb7e91753bc4745433a42應用在網頁視圖: http://gyazo.com/a58de6192aa822af05a2885560e66f91

logcat 中有以下錯誤,我已經調查過並且沒有任何意義,因為這兩個變量在非 webview 環境中都沒有問題。

E/Web 控制台: Uncaught SyntaxError: Unexpected identifier:103
E/Web 控制台::未捕獲的錯誤:無模塊:AuthApp:17

未捕獲的語法錯誤對應於以下內容,其中結果是我從 Parse 獲得的查詢結果。 請注意,我已經在其他瀏覽器中檢查了結果的內容,實際上它正在將結果返回給我的查詢。

 for (var result of results){
...
}

在您的網頁瀏覽中嘗試這些設置。 我過去在這些方面取得了成功

mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());

您可以添加這些行,它將解決您的問題

when {
        Build.VERSION.SDK_INT >= 21 -> {
            binding.webView.settings.mixedContentMode = 0
            binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
        }
        Build.VERSION.SDK_INT >= 19 -> {
            binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
        }
        Build.VERSION.SDK_INT < 19 -> {
            binding.webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM