gpt4 book ai didi

coldfusion - 如何使自定义标记中的代码块仅在第一次调用该标记时运行?

转载 作者:行者123 更新时间:2023-12-01 21:28:11 25 4
gpt4 key购买 nike

我正在创建一组 ColdFusion 自定义标签,旨在简化某些布局元素的重用。我将以类似于以下的方式使用它们:

<cfimport prefix="layout" taglib="commonfunctions/layouttags">

<layout:fadingbox>
This text will fade in and out
</layout:fadingbox>
<layout:stockticker>
This text will scroll across the screen
</layout>

为了使这些自定义标记生成的代码正常工作,需要将 JavaScript 文件链接到页面,如下所示:

<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>

我更愿意包含自定义标签内的脚本,而不是让用户自己包含它。问题是每个页面只能包含 JavaScript 文件一次。第一次使用这些自定义标签之一后,我希望后续调用同一页面上的同一标签,以避免重复 <script> 标签。我突然想到我可以做这样的事情:

<cfif NOT isDefined("Caller.LayoutTagInitialized")>
<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>
</cfif>
<cfset Caller.LayoutTagInitialized = 1>

...但是看起来不太优雅。

请问有没有更好的办法?

你会如何实现这个?

编辑 - 说明:

如果我上面写的没有意义,这里有一个更详细的示例:

如果我有这样的自定义标签:

<cfif ThisTag.ExecutionMode EQ "start">
<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>
<div class="mytag">
<cfelse>
</div>
</cfif>

...我有 CFML 标记调用标签,如下所示:

<layout:mytag>
One
</layout:mytag>
<layout:mytag>
Two
</layout:mytag>
<layout:mytag>
Three
</layout:mytag>

...我希望生成如下所示的 HTML:

<!-- Script included only the first time the tag is called -->
<script src="commonfunctions/layouttags/enablingscript.js" type="text/javascript"></script>
<div class="mytag">
One
</div>
<!-- No <script> tag on the second call -->
<div class="mytag">
Two
</div>
<!-- No <script> tag on the third call -->
<div class="mytag">
Three
</div>

最佳答案

使用请求范围。

关于coldfusion - 如何使自定义标记中的代码块仅在第一次调用该标记时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com