Javascript Primefaces移动JS仅在第一个';第'页;
我有一个使用Primefaces mobile构建的web应用程序。总的来说,一切都很好,我可以愉快地从一个视图导航到另一个视图等等 当我尝试加载外部JS文件时,问题就出现了。更具体地说,外部JS/事件侦听器只处理加载的第一个“视图”。所有其他的“视图”都表现得好像没有调用JS一样 我花了几个小时来缩小范围,但我最终使用了第三方库“iscroll.js”()来隔离问题 如果我将iscroll.js文件放在我的resources目录中并遵循iscroll文档,那么在第一个视图中创建一个滚动div,一切都会如预期的那样完美。如果我把相同的div放在任何其他视图上,我什么也得不到。我可以在“视图”中来回导航,初始“视图”保持其“正确性”(即,当我转到另一个“视图”时,它不会停止工作) 显然,我的问题是如何让它在所有视图上工作?我猜这是因为我不了解Primefaces Mobile是如何工作的,但是任何能够提供帮助的JSF、Primefaces、JS专家都将不胜感激 更新:要解释的基本精简代码Javascript Primefaces移动JS仅在第一个';第'页;,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,我有一个使用Primefaces mobile构建的web应用程序。总的来说,一切都很好,我可以愉快地从一个视图导航到另一个视图等等 当我尝试加载外部JS文件时,问题就出现了。更具体地说,外部JS/事件侦听器只处理加载的第一个“视图”。所有其他的“视图”都表现得好像没有调用JS一样 我花了几个小时来缩小范围,但我最终使用了第三方库“iscroll.js”()来隔离问题 如果我将iscroll.js文件放在我的resources目录中并遵循iscroll文档,那么在第一个视图中创建一个滚动div,
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:pou="http://primefaces.org/ui"
xmlns:pm="http://primefaces.org/mobile"
contentType="text/html"
renderKitId="PRIMEFACES_MOBILE"
xmlns:ez="http://java.sun.com/jsf/composite/ezcomp">
<pm:page title="iConsult">
<f:facet name="postinit">
<h:outputScript name="js/iscroll.js"/>
</f:facet>
<script type="text/javascript">
// Variables -----------------------------------------------------------
var myScroll; // Scrolling lib var
function loadScroll() {
setTimeout(function() {
myScroll = new iScroll('wrapper');
}, 100);
}
window.addEventListener('load', loadScroll, false);
</script>
<!-- Main View -->
<pm:view id="main">
<pm:header title="main page" swatch="b">
<f:facet name="right">
</f:facet>
</pm:header>
<pm:content>
// If I place the iscroll div here it works
// ...lots of code to do with the app
</pm:content>
</pm:view>
<!-- Other View -->
<pm:view id="view1">
<pm:header title="view1" swatch="b">
<f:facet name="right">
</f:facet>
</pm:header>
<pm:content>
// If I place the iscroll div here it doesn't works
// ...lots of code to do with the app
</pm:content>
</pm:view>
</pm:page>
</f:view>
//变数-----------------------------------------------------------
var myScroll;//滚动库变量
函数loadScroll(){
setTimeout(函数(){
myScroll=新iScroll(“包装器”);
}, 100);
}
window.addEventListener('load',loadScroll,false);
//如果我把iscroll div放在这里,它就工作了
//…有很多与应用程序相关的代码
//如果我把iscroll div放在这里,它就不工作了
//…有很多与应用程序相关的代码
要明确的是,这不是iscroll独有的。我只是用它作为参考,但我尝试过的所有外部JS文件都是这样。是不是因为你没有将插件JS包含在正确的位置(一些基本模板),而是将其包含在一些内部页面中?@Daniel Nope没有使用任何模板。它是一个具有多个视图的单一“页面”应用程序。为了清楚起见,只是在问题中添加了精简版的代码。不熟悉手机。。。但是,如果您替换了
@Daniel No,则没有任何帮助。当呈现上述代码时,它仍然呈现普通标记。