页面加载后如何执行JavaScript?

ste*_*fan 18 javascript onload primefaces jsf-2

我想在页面加载后执行JavaScript函数.目前我有一个commandButton,一切正常.然而,如果用户不应该按下按钮会更舒服.

我试过f:event,但是我没有监听器,我只有JavaScript函数.此外,body onload对我不起作用,因为我只使用高级组件.

<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>
Run Code Online (Sandbox Code Playgroud)

JavaScript函数PathFinder.findAndGo在我的master.xhtml中定义

Bhe*_*ung 24

使用JQuery如下:

<script>
    jQuery(document).ready(function() {
        PathFinder.findAndGo();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

更新:

它必须在内<ui:define name="content">.

  • jQuery用于处理`onload`事件的唯一目的不是一个好主意. (2认同)
  • 在这种情况下它很好,因为他正在使用需要并加载jQuery本身的PrimeFaces. (2认同)

Ond*_*Mih 9

当我想在Primefaces中加载页面后执行JS函数时,有两种方法对我有用:

  • 要么使用jQuery(因为它已经被Primefaces使用),最好的解决方案是将document.ready嵌套两次,以便我的JS代码在所有Primefaces代码之后执行:
    • jQuery(document).ready(function () { jQuery(document).ready(function () { // twice in document.ready to execute after Primefaces callbacks PathFinder.findAndGo(); }); });
  • 或者使用带有自动运行的p:remoteCommand,并在其上放置完整的JS回调
    • 这种方式表单由AJAX提交给服务器,但没有在服务器端执行监听器,之后执行JS回调
    • <p:remoteCommand oncomplete=" PathFinder.findAndGo(); " autoRun="true"/>

  • 还有一个选项可以指示Primefaces从控制器中的Java代码执行JS,但我不确定这是否在页面加载后执行.我在AJAX动作中使用过这个选项,当我无法指示Primefaces在AJAX之后更新页面标题:`org.primefaces.context.RequestContext.getCurrentInstance().execute("document.title ='"+ StringEscapeUtils.escapeEcmaScript(pageTitle) )+"'");` (2认同)

kin*_*uta 5

window.onload = function () {
  // code to execute here
}
Run Code Online (Sandbox Code Playgroud)