【问题标题】:Loading a php file into cross domain page with dynamic element height将php文件加载到具有动态元素高度的跨域页面中
【发布时间】:2013-02-27 11:22:25
【问题描述】:

我正在尝试将我的一个 Web 服务器上的脚本加载到另一个服务的托管站点上的页面中。目前,我正在使用 iframe 来完成这项工作。我遇到的问题是 iframe 无法根据 php 的输出动态扩展。

向我提出的建议是尝试将 php 输出注入 div,但我认为我不能跨域。

我从 example.net/scripts 上的 Web 服务器开始,我可以完全访问它,并将其加载到 example.us 上的页面中,因为它是托管服务(即恩金)。

我需要的是一个解决方案,它允许我从 Web 服务器调用 php 脚本,并在页面上显示它的输出,该元素可以根据脚本的输出进行扩展。当它拉取 php 脚本时,它需要在 CSS 中为 div 预定义的 CSS 参数(min-height,max-height)内显示,但仅在脚本中返回的元素的高度处显示。

为了进一步澄清,我正在使用 php 脚本对来自 TwitchTV 的 API 的 json 输出执行 foreach 循环。当 foreach 循环运行时,它为每个返回的结果构建一个元素结构,以根据需要显示它们。如果我有太多返回,我最终会溢出 iframe,如果我没有返回,它只会返回一个字符串并显示它,但此时 iframe 的高度太高了。

任何人都可以给我的例子或解决方案建议?

【问题讨论】:

  • 因此:您对站点 A 的访问受限。站点 A 有一个显示站点 B 的 iframe。根据站点 B 上的输出,您希望站点 A 上的 iframe 更改大小。对吗?
  • 是的,这非常准确。如果我可以使用 iframe 以外的其他东西,那就太好了,但最大的问题是获取 iframe 或其他任何元素,以根据站点 B 上脚本的输出来获取它的高度。
  • 您可以通过 CURL 使用服务器端代理抓取跨域内容。
  • 在我要去的网站上,我不能使用 PHP,否则脚本就在那里。 “站点 B”为我提供了非常基本的访问权限。
  • 您可以在站点 B 上做什么? javascript? jQuery?只是html?

标签: php jquery


【解决方案1】:

由于您可以使用 AJAX,您的解决方案是使用 AJAX 调用非锁定站点上的代码,并返回包含内容的框。在锁定站点上,处理该代码,然后将其粘贴到锁定站点上的<div> 中。当然,该 div 可以像往常一样扩展以适应内容。

如果由于某种原因您必须使用 iframe,只需使用 javascript 收集框的高度(如果需要,您可以使用 left: -9999px 将框隐藏到左侧)。使用该高度信息来设置 iframe 的高度。所以你基本上是两次加载 iframe 的内容。一次通过 ajax 只是为了获得高度,一次通过实际的 iframe。

我真的看不出有什么理由需要 iframe —— 第一段中的过程应该可以正常工作。

【讨论】:

  • 我做了这个并测试了它,但没有运气。我相信我仍然遇到来自另一个域的 ajax 调用文件的跨服务器安全问题。这就是为什么这个问题一开始就很棘手的原因。我使用类似 pastebin.com/TNsRpNz6 的东西来完成加载,然后每 10 秒刷新一次,但这不适用于跨域。如果我采用相同的脚本并将其放在站点 a 上,则加载正常。在站点 b 上,它无法加载。
猜你喜欢
  • 1970-01-01
  • 2016-03-12
  • 2023-04-06
  • 2017-08-30
  • 2022-06-11
  • 2017-01-22
  • 2023-03-29
  • 2013-05-08
  • 2013-01-20
相关资源
最近更新 更多