我有一个ColdFusion页面,其上有几个cfinclude
模板调用,其中包含单独的文件到页面中。我想在每次cfinclude
模板调用之前更新javascript变量。我尝试过使用:
<script type="text/javascript">
myvariable = 'new status';
</script>
然而,在页面上包含的每个模板完成处理之前,javascript才会执行,而不是在每个模板执行之前执行。
有没有什么方法可以在页面加载时实际执行javascript代码?
答案 0 :(得分:4)
您可以使用<cfflush>
完成此操作。
CFFlush会在继续处理时将当前的HTML / javascript输出发送到浏览器。它看起来像这样:
<CFInclude template="process1.cfm">
<CFoutput>
<script type="text/javascript">
myvariable = 'new status';
</script>
</CFoutput>
<cfflush>
<CFInclude template="process2.cfm">
...并重复。
一旦加载,javascript就会被浏览器解释。这有时会导致不可预测的行为,因为DOM不完整且处于就绪状态,但对于简单的操作,它可以工作。
编辑:请注意,在浏览器处理之前,您经常需要使用<cfoutput>#repeatString(" ", 250)#</cfoutput>
之类的内容填充输出。见http://www.raymondcamden.com/index.cfm/2006/11/29/A-Loading-page-with-CFFLUSH-and-JavaScript