【问题标题】:ColdFusion - Detect top windowColdFusion - 检测顶部窗口
【发布时间】:2012-10-09 03:05:21
【问题描述】:

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

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

【问题讨论】:

  • 什么情况下页面会在 iframe 中?
  • 我们经营一个在线游戏网站,有时其他网站会对我们的游戏进行 iframe。我对此没有意见,但如果用户只看到游戏,我不希望呈现其他不必要的页面元素。

标签: javascript iframe coldfusion window


【解决方案1】:

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

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

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

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

【讨论】:

  • 好的,有道理。但是我不确定在查询字符串上添加参数是什么意思。你说的是数据库查询吗?我要添加什么样的参数?
  • 我猜他的意思是在查询字符串中添加一个 URL 参数。除了重定向之外,我不确定如何完成此操作。
【解决方案2】:

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

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

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

【讨论】:

  • 我们已经在记录我们游戏的 iframe 的站点 URL(使用 CGI.HTTP_REFERER),它运行良好,所以我认为没有必要更改它。尤其是因为任何人都可以轻松地将简单的 iframe 添加到他们的网站。
  • HTTP_REFERER 可能有一些不稳定的行为,因此使用风险自负。
  • 好的,我明白了。但就我们的目的而言,这没什么大不了的。没什么重要的,只是检查我们的流量来自哪里。
【解决方案3】:

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

【讨论】:

  • 谢谢,但我试过了,但遇到了问题。如果用户点击我们的 Facebook 页面上的链接并被定向到我们的网页,那么 CGI.HTTP_REFERER 值将是“facebook.com”。因此,即使用户看到的是整个页面(而不是 iFramed 游戏),代码也会认为该页面是 iFramed。
  • CGI.HTTP_REFERRER 可能是有史以来最不可靠的 cgi 变量,不应该用于任何重要的事情。曾经。 stackoverflow.com/questions/6880659/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
相关资源
最近更新 更多