0

我的网站上有一个错误页面,每当出现错误时都会调用它,有时是从 cfwindow 中调用,然后我不想显示页眉和页脚。

我有许多 cfwindows 可能会产生这个错误(正在处理那个......)

因此,与其将信息添加到调用 cfwindow 的父窗口,我只想(如果可能)检查错误页面

if(parent.cfwindow){remove the header and footer}

谢谢你的帮助

4

1 回答 1

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>

在错误文件中,我会<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

在 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>

两条路线都不应被视为非常安全。这是为了方便和展示,但你不应该认为它们是不可穿透的,因为它们不是。

于 2014-11-18T03:33:00.527 回答