我的网站上有一个错误页面,每当出现错误时都会被调用,有时来自cfwindow,然后我不想显示页眉和页脚。
我有很多cfwindows可能会产生此错误(正在处理......)
所以不是在调用cfwindow的父窗口中添加信息,我只想(如果可能的话)检查错误页面
if(parent.cfwindow){remove the header and footer}
谢谢你的帮助
答案 0 :(得分:2)
每个更新/澄清的问题(关于错误页面的这个问题)..
虽然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>
在错误文件中,我根据url.inWindow的状态执行了一些<cfif>
。
Javascript,尤其是jQuery,也有这样做的方法,您可以删除页眉和页脚内容并使用unwrap()
来提取内容区域的内容,如下所示:JS - Remove a tag without deleting content。
我没有使用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>
这两条路线都不应该被认为是非常安全的。这是为了方便和展示,但你不应该认为它们难以理解,因为它们不是。