【问题标题】:Android webview not rendering CSS and angularAndroid webview不呈现CSS和角度
【发布时间】:2017-05-26 07:04:52
【问题描述】:

我正在尝试将 URL 加载到 android 本机 webview 中,但它不会呈现 CSSAngular

代码:

    WebView wvFAQs = (WebView) mFragmentView.findViewById(R.id.wvUrls);

    Map<String, String> headersMap = new HashMap<>();
    headersMap.put(ApiConstants.AUTHORIZATION, BuildConfig.SS_API_AUTH);
    wvFAQs.setWebViewClient(new WebViewClient() {

        @SuppressWarnings("deprecation")
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }

        @TargetApi(Build.VERSION_CODES.N)
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return false;
        }
    });
    wvFAQs.getSettings().setJavaScriptEnabled(true);
    wvFAQs.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
    wvFAQs.loadUrl(mUrl,headersMap);

错误:

"Uncaught ReferenceError: _ is not defined",

"Uncaught ReferenceError: angular is not defined",

"Uncaught ReferenceError: $ is not defined",

但此 URL 在移动浏览器(chrome 和默认的 android 浏览器)中运行良好。

当我搜索这个问题时,我知道我需要在 webiew 中启用 html5 支持功能,这里是 link,但仍然无法正常工作。

谁能告诉我可能是什么问题? URL 或 webview 有什么问题吗?

【问题讨论】:

    标签: javascript android angularjs webview android-webview


    【解决方案1】:

    我使用这个 Java 代码来加载 webview:

    public class MainActivity extends AppCompatActivity {
    
    private WebView view;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        view = (WebView) this.findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);
        view.setWebViewClient(new MyBrowser());
        view.loadUrl("file:///android_asset/www/index.html"); //try js alert
        view.setWebChromeClient(new WebChromeClient()); // adding js alert support
    }
    
    private class MyBrowser extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
    
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) {
            view.goBack(); //method goback()
            return true;
        }
    
        return super.onKeyDown(keyCode, event);
    }
    

    我可以说的是,如果您使用 Jquery,则需要将其添加到您的资产中,因为来自 cdn 的外部链接如下:

         <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
    

    无法加载。

    【讨论】:

    • 我的网址是公开的,不是本地的。好吧,我使用 android 自定义选项卡解决了我的问题。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多