Ответ 1
Используйте JQuery следующим образом:
<script>
jQuery(document).ready(function() {
PathFinder.findAndGo();
});
</script>
Update:
Он должен находиться в пределах <ui:define name="content">
.
Я хотел бы выполнить функцию JavaScript после загрузки страницы. На данный момент у меня есть commandButton, и все работает нормально. Однако было бы удобнее, если бы пользователь не нажал кнопку.
Я пробовал f: event, но у меня нет слушателя, у меня есть только функция JavaScript. Кроме того, нагрузка на тело не работает для меня, поскольку я использую только компоненты высокого уровня.
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:pm="http://primefaces.org/mobile" contentType="text/html">
<ui:composition template="/resources/master.xhtml">
<ui:define name="content">
<pm:content>
<h:inputHidden id="address" value="#{pathFinderBean.address}" />
<div id="map" style="width: 100%; height: 285px;"></div>
<p:commandButton type="button" value="Route" onclick="PathFinder.findAndGo()"/>
<div id="route"></div>
</pm:content>
</ui:define>
</ui:composition>
Функция JavaScript PathFinder.findAndGo определена в моем master.xhtml
Используйте JQuery следующим образом:
<script>
jQuery(document).ready(function() {
PathFinder.findAndGo();
});
</script>
Update:
Он должен находиться в пределах <ui:define name="content">
.
Есть два способа работы для меня, когда я хочу выполнить JS-функцию после загрузки страницы в Primefaces:
jQuery(document).ready(function () {
jQuery(document).ready(function () {
// twice in document.ready to execute after Primefaces callbacks
PathFinder.findAndGo();
});
});
<p:remoteCommand oncomplete=" PathFinder.findAndGo(); " autoRun="true"/>
window.onload = function () {
// code to execute here
}
Для правых поверхностей мне удалось успешно использовать следующее:
Я загрузил в <head>
файл JS, содержащий функции, которые мне нужны для загрузки, используя:
< h:outputScript library="javascript" name="nameOfMyFile.js" target="head">
Я использовал следующее для запуска функций JS, которые мне нужны из "nameOfMyFile.js":
< h:body onload="nameOfMyFunction()" >
Обратите внимание, что мой js файл также содержит следующую команду внизу:
$(document).ready(nameOfMyFunction());
3-я точка предназначена для запуска функции onReady
. Это был весь эксперимент, чтобы увидеть, могу ли я добавить HTML к событиям расписания... поскольку строки, переданные там, анализируются и html-теги. Мне еще предстоит выяснить, зачем мне нужны onReady
и onLoad
.... но на данный момент это единственный способ, который это сработало для меня. Я обновлю, если найду что-нибудь новое.
Это было успешно.
Включите (внизу страницы) библиотеку jQuery в пределах <ui:define name="content">
, а затем используйте $(document).ready
, как обычно:
<ui:define name="content">
...
<!-- jQuery -->
<h:outputScript name="vendor/jquery/jquery.min.js"/>
<script>
$(document).ready(function(){
alert(1);
});
</script>
</ui:define>