我的网站上有一个错误页面,每当出现错误时都会调用它,有时是从 cfwindow 中调用,然后我不想显示页眉和页脚。
我有许多 cfwindows 可能会产生这个错误(正在处理那个......)
因此,与其将信息添加到调用 cfwindow 的父窗口,我只想(如果可能)检查错误页面
if(parent.cfwindow){remove the header and footer}
谢谢你的帮助
我的网站上有一个错误页面,每当出现错误时都会调用它,有时是从 cfwindow 中调用,然后我不想显示页眉和页脚。
我有许多 cfwindows 可能会产生这个错误(正在处理那个......)
因此,与其将信息添加到调用 cfwindow 的父窗口,我只想(如果可能)检查错误页面
if(parent.cfwindow){remove the header and footer}
谢谢你的帮助
每个更新/澄清的问题(关于这是一个错误页面)..
虽然 javascript 仍然可以管理这一点,但这最适合服务器端。
我不知道你的OnError
方法是什么样的,或者你是否使用application.cfm
. 以下是我将如何做到这一点:
我不会直接重定向到/error.cfm
错误页面或任何错误页面,而是:
<cfif not isDefined("url.inWindow")>
<cflocation url="/error.cfm" addtoken="no" />
<cfelse>
<cflocation url="/error.cfm?inWindow=1" addtoken="no" />
</cfif>
在错误文件中,我会<cfif>
根据 url.inWindow 的存在来做一些事情。
Javascript,尤其是 jQuery,也有这样做的方法,您可以删除页眉和页脚内容并使用unwrap()
, 来拉取内容区域的内容,如下所示:JS - 删除标签而不删除内容。
我不使用CFWINDOW
所以不幸的是我不熟悉细微差别,Railo 支持它有点不同
实现此目的的最佳 ColdFusion 路线可能只是通过源链接传递 url 变量。
<cfwindow ... source="/demo/6/windowContentA.cfm?inWindow=1">
然后,在文档中。
<cfif isDefined("url.inWindow")>The page is within a window</cfif>
在 javascript 中执行此操作的方法与任何一个都有关(这是我无法测试的部分:/没有访问 ACF。)检查窗口是否是顶部元素(但这可能不起作用)。
<a href="javascript:void(0)" onclick="alert((self==top ? 'in a popup' : 'not in a popup'));">Test link</a>
或者(如果这不起作用,请检查页面中是否存在元素。
<a href="javascript:void(0)" onclick="alert(( document.getElementById('cf_window1') ? 'in a popup' : 'not in a popup'));">Test link</a>
因为 CFWindow 创建了一个名为 cf_window1 的元素,所以我用它来测试,但您应该可以使用任何元素名称。如果需要,您可以专门为此目的创建一个元素。
虽然这是我设法测试的方式......通过一些无关紧要的魔法,你可以在脚本标签中使用类似的javascript来做除了警报之外的事情。
<script>
if(self==top) {
// The page is outside of a frame.
}
</script>
或寻找元素路线
<script>
if(document.getElementById('cf_window1')) {
// The page is within a frame.
}
</script>
两条路线都不应被视为非常安全。这是为了方便和展示,但你不应该认为它们是不可穿透的,因为它们不是。