向单元格表DOM注入JavaScript(JSNI)



在我的应用程序中,我使用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();
            }
        });

谢谢你的建议。

最新更新