Я загружаю jQuery, встроенный в RichFaces, с помощью:
<a4j:loadScript src="resource://jquery.js"/>
Затем я загружаю плагин FancyBox jQuery с:
<script type="text/javascript" src="/App/fancybox/jquery.fancybox-1.3.4.pack.js"/>
Плагин работает нормально, когда страницасначала загружается, однако после выполнения ajax-вызова с
<a4j:jsFunction name="myMethod" data="#{myController.jsonDataToReturn}" action="#{myController.doSomething()}" oncomplete="populateData(data);">
<a4j:actionparam name="selectedTag" assignTo="#{myController.selectedTag}"/>
</a4j:jsFunction>
плагин перестает работать.Тесты показывают, что тег a4j:loadScript
перезагружается при каждом вызове ajax, таким образом, перезагружая переменную jQuery, которая теряет подключенный плагин.
Текущий обходной путь - загрузка jQuery путем помещения тега <rich:jQuery query="fn" />
где-то на странице,Он ничего не делает, кроме принудительной загрузки jQuery, но поскольку он не использует a4j, jQuery не перезагружается при вызовах ajax.
Тем не менее, есть ли для этого чистое решение?Я использую RichFaces 3.3.3, которая включает в себя jQuery 1.3.2.
Обновление :
FancyBox загружается с:
jQuery(document).ready( function(){
jQuery('.fancyboxLink').live('click',aclick);
});
function aclick(){
jQuery.fancybox({
href: '#{facesContext.externalContext.requestContextPath}/webpage.xhtml',
type:'iframe',
width:710,
height:510,
padding:0,
margin:0,
hideOnOverlayClick:false,
overlayColor:'#000'
});
return false;
}
Послепервый вызов ajax, jQuery больше не содержит fancybox.