2013-05-25 2 views
2

Я бы хотел загрузить файл сгенерированный GWT foo/foo/nocache.js с помощью JQuery. SomeHow Этот файл foo/foo/nocache.js не выполняется браузером. Если я поместил сценарий обычно с помощью стиля GWT с помощью OO, используя JQuery, то после загрузки страницы он будет генерировать скрипт (т. Е. JQuery.onInjectDone ('jquery')) динамически. Теперь, если я создаю этот тег скрипта с помощью JQuery или javaScript, он не генерирует динамически сгенерированный скрипт.Как динамически загружать gwt-файл nocache.js?

Теперь как я могу убедиться, что foo/foo/nocache.js выполняется с помощью jQuery?

Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> 
<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
    </script> 
    <script> 
    $(document).ready(function() { 
    $("#clickMe").click(function() { 
    // This /foo/foo.nocache.js which is generated by GWT compiler. 
     $.getScript("/foo/foo.nocache.js", function(data, textStatus, jqxhr) { 
      console.log(data); //data returned 
      console.log(textStatus); //success 
      console.log(jqxhr.status); //200 
      console.log('Load was performed.'); 
     }); 
    }); 
    }); 
    </script> 
</head> 
<body> 
    <h1>Web Application Starter Project</h1> 
    <a href="#" id="clickMe">clickMe</a> 
    <div id="name"> 
    </div>  
</body> 
</html> 

Выход:

ReferenceError: foo is not defined

ответ

2

В зависимости от линкера, который вы используете, вы не можете загрузить .nocache.js сценарий после создания документа была завершена, поскольку он загружает соответствующую перестановку используя document.write (см. IFrameTemplate.js#344 и XSTemplate.js#279). Это приведет к тому, что весь ваш текущий контент на вашей странице будет перезаписан.

В противном случае, если вы выберете компоновщик xsiframe, вы можете загрузить скрипт, но алгоритм, который он использует для вычисления, где находится перестановка, использует тег сценария или местоположение вашего документа, поэтому вы не можете загрузить его с помощью ajax, но вставляете теги сценария.

$("#clickMe").click(function() { 
    $('body').append($("<script src=foo/foo.nocache.js />")); 
} 
+0

Спасибо Маноло. xsiframe linker идеально подходит для нашего требования. Это сработало. Я доволен. –

+0

Здравствуйте, Manolo, я хотел бы добавить histroy для menuItem, используя JQuery. Теперь у меня проблемы. Я уже опубликовал. Пожалуйста, проверьте приведенную ниже ссылку: http://stackoverflow.com/questions/16946154/jquery-and-gwt-history-support-get-mixed-up –

Смежные вопросы