简体   繁体   English

WebView-下载javascript,css和图像

[英]WebView - Download javascript, css and images

I am saving the content of WebView so that I can show that content when I launch my app the next time. 我正在保存WebView的内容,以便下次启动应用程序时可以显示该内容。 I followed this which works almost as I wanted. 我遵循了这个程序 ,几乎可以按照我的意愿工作。

@JavascriptInterface
        public void setHtml(String html) {
            SharedPreferences settings = getSharedPreferences("preferences", MODE_PRIVATE);
            this.html = html;
            SharedPreferences.Editor prefEditor = settings.edit();
            prefEditor.putString("ActivityHtml", html);
            prefEditor.commit();
            Log.d("html", html);
            setChanged();
            notifyObservers(html);
        }  

And then : 接着 :

view.loadDataWithBaseURL("", settings.getString("ActivityHtml", ""), "text/html", "UTF-8", "");

However, when I see the html in Log, the Javascript and CSS have server paths like : 但是,当我在Log中看到html时,Javascript和CSS的服务器路径如下:

<link href="/Content/Sass/style_sass.css?version=1.0.1.15" rel="stylesheet">  
<img src="../Images/magnify_black.png" />

Now because of this, only the text content shows up while the images aren't shown. 现在,由于这个原因,只有文本内容显示,而没有显示图像。 Like this : 像这样 :

在此处输入图片说明

How may I get the images, css and javascript in HTML ? 如何获取HTML中的图像,CSS和javascript?

Just to tell I already have following in place : 只是说我已经有以下位置:

view.getSettings().setLoadsImagesAutomatically(true);
view.getSettings().setJavaScriptEnabled(true);

I think you should load CSS from Assets or SDcard,just like this: 我认为您应该从Assets或SDcard加载CSS,就像这样:

    WebView wv = new WebView(context);
    StringBuilder html = new StringBuilder();
    html.append("<html>");
    html.append("<head>");
    html.append("<link rel=stylesheet href='css/style.css'>");
    html.append("</head>");
    html.append("<body>");
    html.append("<h1>Some Heading</h1>");
    html.append("<p>Some HTML content</p>");
    html.append("<p><img style='width: 100%;' src='spidermen.jpg' /></p>");
    html.append("</body></html>");
    wv.loadDataWithBaseURL("file:///android_asset/", html.toString(), "text/html", "UTF-8", ""); 

and put the files in the right place. 并将文件放在正确的位置。

网页浏览

Use 采用

view.getSettings().setJavaScriptEnabled(true);
view.getSettings().setBuiltInZoomControls(true);
view.getSettings().setDomStorageEnabled(true);
view.requestFocus(View.FOCUS_DOWN);
view.setWebChromeClient(new WebChromeClient());
view.loadDataWithBaseURL("file:///android_asset/",settings.getString("ActivityHtml", ""),"text/html", "utf-8", null);

and the CSS part you need to place it locally in your assets folder. 和CSS部分,您需要将其本地放置在资产文件夹中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM