Javascript图表未在不同的android api版本上绘制

Javascript图表未在不同的android api版本上绘制,javascript,android,android-webview,Javascript,Android,Android Webview,在开发一个用于绘制图表的Android应用程序时,我遇到了一个奇怪的问题:在Galaxy Nexus S(具有OS 4.0.4)上,图表绘制得非常完美,而在Motorola Defy(CyanogenMod7,具有OS 2.3.7)上,图表绘制得并不完美。这可能是操作系统版本问题吗?有人能帮我吗 代码如下: public class RickshawTestActivity extends Activity { private WebView webView; @Overrid

在开发一个用于绘制图表的Android应用程序时,我遇到了一个奇怪的问题:在Galaxy Nexus S(具有OS 4.0.4)上,图表绘制得非常完美,而在Motorola Defy(CyanogenMod7,具有OS 2.3.7)上,图表绘制得并不完美。这可能是操作系统版本问题吗?有人能帮我吗

代码如下:

public class RickshawTestActivity extends Activity {
    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        webView = new WebView(this);

        webView.getSettings().setJavaScriptEnabled(true);

        setContentView(webView);

        webView.loadUrl("file:///android_asset/chart.html");

    }
}
这里是
assets/chart.html

<!doctype>
<script src="vendor/d3.min.js"></script>
<script src="vendor/d3.layout.min.js"></script>
<script src="rickshaw.min.js"></script>

<div id="chart"></div>

<script>
    var data = [ {
        x : 1910,
        y : 92228531
    }, {
        x : 1920,
        y : 106021568
    }, {
        x : 1930,
        y : 123202660
    }, {
        x : 1940,
        y : 132165129
    }, {
        x : 1950,
        y : 151325798
    }, {
        x : 1960,
        y : 179323175
    }, {
        x : 1970,
        y : 203211926
    }, {
        x : 1980,
        y : 226545805
    }, {
        x : 1990,
        y : 248709873
    }, {
        x : 2000,
        y : 281421906
    }, {
        x : 2010,
        y : 308745538
    } ];

    var graph = new Rickshaw.Graph({
        element : document.querySelector("#chart"),
        width : 580,
        height : 250,
        series : [ {
            color : 'steelblue',
            data : data
        } ]
    });

    graph.render();
</script>

var数据=[{
x:1910,
y:92228531
}, {
x:1920,
y:106021568
}, {
x:1930,
y:123202660
}, {
x:1940,
y:132165129
}, {
x:1950,
y:151325798
}, {
x:1960,
y:179323175
}, {
x:1970,
y:203211926
}, {
x:1980,
y:226545805
}, {
x:1990,
y:248709873
}, {
x:2000,
y:281421906
}, {
x:2010,
y:308745538
} ];
var图形=新人力车。图形({
元素:document.querySelector(“图表”),
宽度:580,
身高:250,
系列:[{
颜色:“钢蓝色”,
数据:数据
} ]
});
graph.render();
数据有效,并且找到了所有引用的
.js
文件。 这也适用于我的Mozilla 13浏览器

谢谢


编辑:

我还在不同的模拟器上测试了这段代码,并得出结论,上面的代码仅适用于3.0及以上版本的操作系统。在3.0以下的操作系统版本上,这不起作用

现在我该怎么做?谢谢

编辑:
我需要一个跨平台的库。

我假设Rickshaw/D3使用的一个或多个功能没有(正确/完全)在Android 3.0之前的WebKit版本中实现。由于Webkit是操作系统的一部分,您不能单独更改或更新它

你唯一的机会就是使用一个不同的web浏览器应用程序,它有自己的渲染引擎——例如,据我记忆所及,Firefox for Android有一个

如果你需要一个运行在2.1+上的Android应用程序,我只看到在你的应用程序中嵌入web渲染器或使用客户端图表生成的可能性。有一些库允许您这样做:


这两个库都是纯Java库,不依赖JavaScript,因此它们独立于操作系统包含的WebKit版本。

这不是一个选项,因为作为开发人员,我必须确保我的应用程序在所有操作系统版本为2.1+的设备上都能正常工作。跨平台是什么意思。你的问题是关于开发安卓应用程序。你真的想让我的50人代表回答这个问题,对吗?:)我想要的是在其他平台上的可重用性。不管怎么说,老兄,你可以给我这个答案,当悬赏不是关于这个问题的时候,顺便说一句,这不是一个很好的答案,我的意思是,它有很好的文档记录,但不能解决我的问题。对不起,我不在乎你的50分,我已经够了。我只是想了解你想要实现的目标。但似乎一个完全独立于平台的解决方案在任何地方都能运行是不可能的。因此,您必须为某些平台和/或版本拆分和开发单独的解决方案。