2012-04-16 6 views
0

Я хочу выполнить JavaScript в своем приложении, которое написано с помощью GWT. Это код, который работает в обычном HTML: (. Предположим jquery.js и jquery.roundabout.js находятся в той же папке)Как использовать JavaScript с gwt Uibinder

<html> 
    <head> 
    </head> 

    <body> 
    <ul> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
     <li></li> 
    </ul> 
    <script src="jquery.js"></script> 
    <script src="jquery.roundabout.js"></script> 
    <script> 
     $(document).ready(function() { 
      $('ul').roundabout(); 
     }); 
    </script> 
    </body> 
</html> 

У меня есть somePresentersomeView.java и someView.ui.xml), и я хочу выше код для работы в someView.ui.xml.

скопировать вставить код выше в XML (для <html> тега, кроме меня <g:HTMLPanel> тега) но JavaScript, кажется, не будет выполнен (все, что я вижу, это список, как это должно быть перед сценарием).

Как я могу заставить его работать?

Связанный вопрос: могу ли я использовать GQuery для этого (что-то вроде: GQuery. $(). GetScript (jquery.roundabout.js) для загрузки внешнего js-скрипта)?

Заранее спасибо

+0

Почему бы вам просто не поместить сценарии jQuery и плагина на свою страницу хоста? При правильном настройке кэширования это не повлияет на производительность вашего приложения. – Strelok

ответ

6

Вы не можете поместить в UiBinder в <script> и ожидать, чтобы он загружается и выполняется по тем же причинам вы не можете поставить <script> в innerHTML в JS с теми же expactations (просто потому, что HTMLPanel и UiBinder будет использовать innerHTML под капотом).

Если вам необходимо загрузить скрипты динамически, посмотрите на ScriptInjector:

ScriptInjector.fromUrl(GWT.getModuleBaseURL() + 'jquery.js').inject(); 

Я полагаю GQuery использует ScriptInjector или работает аналогично.

0

я в конце концов удалось сделать это, поставив

<script src="jquery.js"></script> 
<script src="jquery.roundabout.js"></script> 

в project.html , а затем выполняет соответствующую JavaScript с JSNI вызова, когда соответствующая страница загружается (мой ведущий).