現在、DOMが完全に読み込まれる前にJavaScriptが実行されているように見えるという問題があります。なぜ私はこれを言うのですか?次のコードを取ります。
var $r = $wnd.Raphael("container", 640, 480);
// Creates pie chart at with center at 320, 200,
// radius 100 and data: [55, 20, 13, 32, 5, 1, 2]
$r.piechart(320, 240, 100, [ 55, 20, 13, 32, 5, 1, 2 ]);
Javascript例外を返します:'fisnull'。これは、コンテナ名が認識されていないことを示しているようです。
絶対座標を指定すると、円グラフは正常にレンダリングされます。Chromeコンソールで前のコードを使用すると(すべてがロードされた後)、円グラフがコンテナータグにロードされます。
コードのブロックをJQuery呼び出しでラップしてみました:
$wnd.jQuery(function($) {
// Creates canvas 640 × 480 at 10, 50
var $r = $wnd.Raphael("container", 640, 480);
// Creates pie chart at with center at 320, 200,
// radius 100 and data: [55, 20, 13, 32, 5, 1, 2]
$r.piechart(320, 240, 100, [ 55, 20, 13, 32, 5, 1, 2 ]);
});
...そしてサイコロはありません。
私が試すことができるもののアイデアはありますか?
編集:
これが、JSNIメソッドを呼び出す方法/場所です。以下は、関連するビューコードです。
public class WidgetSamplerView extends AbstractPanelView implements
WidgetSamplerPresenter.Display {
private FlexTable mainPanel;
public WidgetSamplerView() {
super();
mainPanel = new FlexTable();
HTML container = new HTML();
container.getElement().setAttribute("style",
"width:700px;height:700px");
container.getElement().setId("container");
mainPanel.setWidget(0, 1, container);
MyRaphaelWrapper.pieChart(); // JSNI Call
setWidget(mainPanel);
}
}