3
WebView web_view = (WebView) findViewById(R.id.webView1);
        web_view.getSettings().setJavaScriptEnabled(true);
        web_view.getSettings().setPluginsEnabled(true);
        web_view.getSettings().setAllowFileAccess(true);

        String data;
        data = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
                + "<html>"
                + "<head>"
                + "<title>My First chart using FusionCharts XT</title>"
                + "<script type=\"text/javascript\" src=\"FusionCharts.js\">"
                + "</script>"
                + "</head>"
                + "<body>"
                + "<div id=\"chartContainer\">FusionCharts XT will load here!</div>"
                + "<script type=\"text/javascript\">"
                + "FusionCharts.setCurrentRenderer(\"javascript\");"
                + "var myChart = new FusionCharts(\"FusionCharts/Line.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );"
                + "var dataString =\"<chart> <set label='0.00' value='0'/><set label='5.00' value='2' /><set label='7.00' value='3' /><set label='9.00' value='4' /><set label='12.00' value='2' /></chart>\"; "
                + "myChart.setXMLData(dataString);"
                + "myChart.render(\"chartContainer\");" + "</script>"
                + "</body>" + "</html>";

        Log.i("info", "Html " + data);

        web_view.loadData(data, "text/html; charset=UTF-8",null);

在我的项目中,我正在使用融合图表。我正在制作一个 html 字符串数据并将其加载到 WebView 中,如上面的代码示例所示。当我在浏览器中运行此 html 文件时,它会运行并制作 Fusion 图表,但是当我使用 android Web 视图执行此操作时,它不会加载到我的 Web 视图中。我已经启用了 javascript。我将javascript文件粘贴到资产文件夹中。

4

1 回答 1

4

首先,你提到的浏览器是你设备上的浏览器还是电脑上的浏览器?

现在,如果它在 android 浏览器(或您设备中的浏览器)中工作,那么问题是因为 javascript 文件位于您的资产文件夹中。当您通过相对路径(您使用的方式)指示资源时,webview 会相对于与您的 html 文件所在的文件夹相同的文件夹来搜索它。由于您使用字符串作为“html 文件”,因此我建议您使用loadDataWithBaseURL()。我在下面使用 assets 文件夹作为基本 URL 做了一个使用示例,试试看。

web_view.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "UTF-8",null);

public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

在 API 级别 1 中添加 将给定数据加载到此 WebView 中,使用 baseUrl 作为内容的基本 URL。基本 URL 既用于解析相对 URL,也用于应用 JavaScript 的同源策略。historyUrl 用于历史条目。

请注意,仅当 baseUrl 指定除“http”、“https”、“ftp”、“ftps”、“about”或“javascript”之外的方案时,以这种方式指定的内容才能访问本地设备文件(通过“文件”方案 URL) '。

如果基本 URL 使用数据方案,则此方法等效于调用 loadData() 并且忽略 historyUrl。

参数 baseUrl 用作页面基本 URL 的 URL。如果 null 默认为“关于:空白”。data 给定编码的数据字符串 mimeType 数据的 MIMEType,例如 'text/html'。如果为 null,则默认为“文本/html”。encoding 数据的编码 historyUrl 用作历史条目的 URL。如果 null 默认为“关于:空白”。

您可以尝试将 assets 文件夹作为 baseUrl 传递,所以我的猜测是您的代码会是这样的

希望这可以帮助!

于 2013-01-09T19:17:58.143 回答