0

ColdFusion 中是否有检测浏览器窗口是否为顶部窗口的功能?(类似于(if (window == window.top)JavaScript 中的 ))

我问的原因是因为我想让某些页面元素在用户直接访问页面时出现,如果我的页面是 iframed 则不出现。

4

3 回答 3

4

CFML 代码在 CF 服务器上运行,而关于浏览器窗口的任何考虑显然都在客户端上运行。CF 完全不知道客户端系统的 UI 配置,它看到的只是“一个请求”。事实上,请求甚至不是来自客户端,它们来自充当 CF 服务请求的中间人的 Web 服务器:CF 与客户端本身没有交互。

Web 服务器向 CF 提供的唯一与客户端浏览器相关的信息是 CGI 范围内的一些内容,显然这是有限的。而且这些都与浏览器窗口/ iframe 的配置无关。

您将需要使用 Javascript 解决此问题(我将添加到您问题的标签中)。

要在给定的浏览情况下触发不同的代码在 CF 上执行,您需要使用 Javascript 向请求中添加一些信息,以向 CF 识别情况。这可能是在查询字符串上添加一个参数,或者类似的东西。

于 2012-10-09T05:46:26.590 回答
0

如果有人“包装”我的产品之一,我想知道谁以及如何改进用户和网站所有者的体验。考虑到这一点,我会默认自动跳出任何帧。然后,我将创建一个简单的 api,并向其他网站管理员提供有关包含您的内容的正确方法的说明。一旦您确定您的内容是否正确包含在另一个站点中,就显示不同的内容。对于想要包含您的内容的网站管理员:

  1. 为 iFrame 提供推荐的高度/宽度,以便您可以在内容中包含您的徽标或广告。
  2. 提供您希望他们包含在查询字符串中的任何内容以帮助跟踪使用情况。
  3. 您甚至可以在您的 api 中添加有趣的东西,以使您的内容看起来更加集成到包括网站中,例如对 url.bgcolor 或 url.bgimage 做出反应。

您可以像查找和记录某些 url 变量(如 url.remoteSiteAddress)的值一样简单,也可以像注册站点并提供唯一键一样复杂。当然,在执行密钥时还需要考虑其他因素。由于您并不真正关心内容是否显示在远程站点上,因此我怀疑仅记录一个简单的 url 变量会提高您的速度。

于 2012-10-10T12:18:59.037 回答
-1

如果其他网站将您的页面放在他们网站上的 iframe 中,那么您可以使用该CGI.HTTP_REFERRER变量来检查网站域是否属于您,并根据需要加载内容。

于 2012-10-09T04:48:32.460 回答