HPW*_*PWD 2 javascript coldfusion jquery
我的客户有一个现有的横幅网站标题,经过7年多的时间,他们现在想要在页面横幅文本下面另一行引用页面标题.我试图避免不得不进入每一页添加一行文本并提出以下解决方案.这不是完美的(也不是必须的)但是你看到这种方法有什么不可预知的问题吗?
<cfparam name="url.CurrentPage" default="">
<div id="wideheader">
<div id="wideheadermain">
<h1 id="title">
<div class="PageBannerText">Technology Lab
<span id="CurrentPage"><cfswitch expression="#url.CurrentPage#">
<cfcase value="Update">
Update Project Data
</cfcase>
<cfcase value="Tracker">
Project Tracker
</cfcase>
<cfcase value="ProjectLog">
Project Log
</cfcase>
<cfcase value="Portfolio">
Project Portfolio
</cfcase>
<cfcase value="Links">
Related Links
</cfcase>
<cfcase value="Coordinator">
Coordinator Space
</cfcase>
<cfcase value="Request">
Project Request
</cfcase>
<cfcase value="Viewer">
Project Tracker Read-Only
</cfcase>
<cfcase value="LabMgr">
Lab Manager
</cfcase>
<cfcase value="Architect">
Architect Module
</cfcase>
<cfdefaultcase>
#url.CurrentPage#
</cfdefaultcase>
</cfswitch> #cookie.CurrentPage#</span>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以将上面的代码添加到我的标题页,然后在主导航菜单中添加以下代码,这将设置子页面标题:
<ul>
<li><a href="Proj/TrackerMenu.cfm?CurrentPage=Project Tracker">Project Tracker</a></li>
<li><a href="Proj/RequestCopyOrAdd.cfm?CurrentPage=Request a Project">Request a Project</a></li>
<li><a href="Proj/ViewerMenu.cfm?CurrentPage=Project Viewer">Project Viewer</a></li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
我知道这不会是完美的,但我相信这将覆盖90-95%的网站.
我的另一个想法是用子标记包装子页面横幅文本并给它一个ID然后使用jQUery来设置文本.我可以编写一个例程来评估当前的URL,然后相应地设置子页面横幅文本.
TIA
一个更简单的解决方案是将标题存储在结构中,然后进行查找.
即把它放在应用程序启动内:
<cfset Application.PageTitles =
{ 'Update' : 'Update Project Data'
, 'Tracker' : 'Projet Tracker'
...
, 'LabMgr' : 'Lab Manager'
, 'Architect' : 'Architect Module'
}/>
Run Code Online (Sandbox Code Playgroud)
(注意:如果您使用的是CF9或更早版本,则需要使用=而不是:CF10,并且所有版本的Railo和OpenBD都支持使用任何一个:或=内联结构.)
然后用以下方法更换开关/外壳块:
<cfif StructKeyExists(Application.PageTitles,Url.CurrentPage)>
<cfset PageTitle = Application.PageTitles[Url.CurrentPage] />
<cfelse>
<cfset PageTitle = Url.CurrentPage />
</cfif>
#HtmlEditFormat(PageTitle)#
Run Code Online (Sandbox Code Playgroud)
您可以在菜单中使用类似的内容,因此您无需在多个位置更新标题.
另请注意使用HtmlEditFormat来防止可能的HTML /脚本注入.
您还应该将其添加到cookie变量以及任何其他用户提供的变量(以及任何不保证不具有可能更改HTML的字符的变量).