Я динамически добавляю скрипты GWT с помощью JQuery, а затем отслеживаю историю, используя историю JQuery.Поддержка JQuery и GWT History смешана
Задача: Мои модули GWT генерируют токены History
, потому что все мои модули GWT являются модулями MVP. И onClick()
s из MenuItem
s динамически загружает модуль GWT вместе с этим. Я добавляю историю для MenuItems
с использованием JQuery. Но мои модули GWT также используют History
. Теперь проблема в том, что если я повторно нажимаю на MenuItem
, который загружает GWT MVP modules
, someHow мой браузер получает пораженный.
код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="/newclickmenu/jquery.history.js"></script>
// Contains code which creates menuItems using JSTL. In this menuItem there will be menuItem and *subMenuItem(onclick of menuItem there will be a slideDown which would show subMenuItem
<script type="text/javascript">
jQuery(window).load(function() {
$('body').on('click', '#subMenuItem', function(event) {
// onClick of subMenuItem(which is anchor) then it add the History and will invoke the GWT mvp module.
// After doing the push then below `$.history.on('load change push', function(event, url, type) {` line is called.
$.history.push($(this).attr("href"));
event.preventDefault();
});
$.ajaxSetup({ cache: true });
$.history.on('load change push', function(event, url, type) {
if (event.type == "load") {
if (url.split("!").length < 2) {
window.location = url;
}
} else {
// This code will add the GWT module dynamically.
if (typeof url !== undefined && url !== null && url !== "") {
// Remove the old GWT script and append the new script
var previousModule = $(".mainModule");
if (previousModule.parent().length !== 0) {
$(previousModule).remove();
}
var expectedUrl = "<script class='mainModule' src='/Masters/Masters.cache.js'/>";
$('head').append($(expectedUrl));
}
}
)};
}).listen('hash');
</script>
Предлагаю вам добавить свой код. – qben
Я добавил код, пожалуйста, проверьте его. –