在我的应用程序中,我使用GWT Cell Table,对于一些列标题,我想添加工具提示。列标题是通过使用SafeHtml创建的,并使用JSNI将JS注入单元格表标题。但这一次DOM并没有创建,JavaScript也没有附加到用于工具提示的列Header。如果我使用Timer,那么问题就来了,我不想使用Timer。有什么方法可以注入JS吗?有线索吗?参见以下代码,
列标题安全Html:
SafeHtml="<span>Total</span><span title='' rel='tooltipTop' class='reqFull' data-original-title='{0}'> <i class='fa fa-info-circle'></i></span>";
JSNI:
private static native void initTooltip() /*-{
$wnd.$(document).ready(function(){
$wnd.jQuery("[rel=tooltipTop]").tooltip({ placement: 'top'});
});
}-*/;
我在创建表之后调用这个JSNI,但是DOM还没有准备好。甚至我也试着在onAttach()方法中调用这个JSNI脚本,
@Override
protected void onAttach() {
super.onAttach();
initTooltip();
}
有什么建议吗?
我认为Scheduler也可能是一个解决方案。它将把jsni添加到下一个JavaScript循环的开头。
但我认为仍然有一个更好的解决方案,而不是使用定时器或调度器。
更新
你的代码中似乎有一个错误:
在JSNI中,document
需要被称为$doc
private static native void initTooltip() /*-{
$wnd.$($doc).ready(function(){
$wnd.jQuery("[rel=tooltipTop]").tooltip({ placement: 'top'});
});
}-*/;
我使用计时器来解决这个问题,
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
initTooltip();
}
});
谢谢你的建议。