2015-04-01 29 views
0

在我的申請我使用GWT單元表,對於一些列標題我想添加tooltip.Column頭是通過使用SafeHtml和JS噴吹到小區使用JSNI表標題創建的。但那個時候DOM沒有創建,JavaScript沒有附加到工具提示的列標題。如果我使用Timer,那麼問題就會消失,我不想使用Timer.Is有任何方法來注入JS?任何線索?請參見下面的代碼,噴吹的JavaScript(JSNI)至細胞表DOM

列標題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。 連我試着打電話給這個JSNI腳本中onAttach()方法,

@Override 
    protected void onAttach() { 
     super.onAttach(); 
     initTooltip(); 
     } 

什麼建議嗎?

回答

0

我用定時器來解決這個問題,

Scheduler.get().scheduleDeferred(new ScheduledCommand() { 
      @Override 
      public void execute() { 
       initTooltip(); 
      } 
     }); 

感謝您的建議。

1

我認爲Scheduler也可能是一個解決方案。它會將jsni添加到下一個JavaScript循環的開始處。

但我認爲仍然可能有更好的解決方案,而不是使用計時器或調度程序。

更新

似乎是在你的代碼中的錯誤:

在JSNI的document需要被卡列斯爲$doc

private static native void initTooltip() /*-{ 
    $wnd.$($doc).ready(function(){ 
     $wnd.jQuery("[rel=tooltipTop]").tooltip({ placement: 'top'}); 
    }); 
}-*/; 
+0

感謝您的回覆。我不想使用定時器,這將打擊性能,是否有任何其他方法? – 2015-04-02 07:53:11

+0

是的,你是正確的..我使用調度程序的工作 – 2015-04-04 05:29:20