fro*_*die 7 javascript coldfusion script-tag
我有一些使用相同的javascript代码的coldfusion文件.我想将javascript分成一个.js文件并将其包含在每个文件中,这样我就不必多次重复所有内容.所以,我将javascript代码分成了一个名为"myPage.js"的文件,而在"myPage.cfm"中我添加了一个脚本标记 -
<script language="javascript" src="myPage.js"></script>
Run Code Online (Sandbox Code Playgroud)
问题是在javascript之间传播了一些使用<cfoutput>s等注入值的冷却代码,并且不再正确翻译,可能是因为它试图将其作为纯javascript读取.有没有办法我可以有一个外部的js文件,但表明我希望它使用coldfusion来解释它?
我找到的一个解决方法是将javascript放入coldfusion文件而不是javascript文件,称为"myPageJavascript.cfm",包围<script type="text/javascript">标签中的所有javascript代码,然后使用cfinclude将javascript包含在所有页面.这样可以正常工作,但在我看来并不像包含js文件一样直观......对于这样的情况,标准做法是什么?有没有办法将其作为外部js文件实现,还是应该坚持我的coldfusion模板文件?
其他的答案是更优雅和高效,但讨巧是改变文件扩展名.js来.cfm为这样的:
<script language="javascript" src="myPage.cfm?id=#createUuid()#"></script>
Run Code Online (Sandbox Code Playgroud)
这createUuid()是为了防止缓存,假设文件输出不同,很可能是基于session范围的变量.客户端将其加载为JavaScript,而服务器将其作为ColdFusion进行处理.你也可以用样式表做同样的事情.
现在,如果您的JavaScript依赖于来自调用页面的值,您可以在URL上传递它们:
<script language="javascript" src="myPage.cfm?name1=value1&name2=value2"></script>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当传递相同的URL参数时,您实际上可以利用缓存.
总的来说,这种方法比重构代码以保持.js文件"纯粹" 要少得多,同时输出<script/>预先依赖于块的变量.
我建议你在js include之前创建一个脚本块,其中包含要在js文件中使用的所有变量.在您的情况下,将放在js文件中的cfoutput变量移动到主文件中
<script type='text/javascript'>
var sourceName = <cfoutput>#Application.name#</cfoutput>
</script>
<script src="js/myPage.js" type="text/javascript"/>
Run Code Online (Sandbox Code Playgroud)
在myPage.js文件中,您可以使用变量sourceName,它具有来自coldfusion变量的实际值.从而帮助您分离coldfusion代码和js代码.
如果要移出很多变量,请考虑创建对象类型变量并在其中添加所有这些变量.
注意:使用脚本标记添加js将有助于缓存并提高页面性能.所以不要将js文件加载为cfm文件
| 归档时间: |
|
| 查看次数: |
8061 次 |
| 最近记录: |