在我的应用程序中,我正在使用GWT Cell Table,对于某些列标题,我想添加tooltip.Column Header是使用SafeHtml创建的,并使用JSNI将JS注入到单元格表头。但是那个时候DOM没有创建而且JavaScript没有附加到工具提示列Header。如果我使用Timer然后问题就会消失,我不想使用Timer.Is有什么方法可以注入JS吗?任何线索?见下面的代码,
列标题SafeHtml:
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();
}
有任何建议吗?
答案 0 :(得分:1)
我认为Scheduler也可能是一种解决方案。它会将jsni添加到下一个JavaScript循环的开头。
但我认为仍然可能有更好的解决方案,而不是使用Timer或Scheduler。
<强>更新强>
您的代码中似乎有错误:
在JSNI中,document
需要为$doc
private static native void initTooltip() /*-{
$wnd.$($doc).ready(function(){
$wnd.jQuery("[rel=tooltipTop]").tooltip({ placement: 'top'});
});
}-*/;
答案 1 :(得分:0)
我使用计时器来解决此问题,
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
initTooltip();
}
});
感谢您的建议。