【问题标题】:iFrame ScrollbarsiFrame 滚动条
【发布时间】:2012-08-25 08:53:03
【问题描述】:

又一个跨域 iFrame 问题!我到处搜索并相信这是不可能的,所以这里是:

iframe 的滚动条是该 iframe 窗口元素的一部分,因此由于相同的来源政策,我无法直接设置它们的样式。起初我认为我会很聪明,并在“轨道”容器中使用 jQuery UI 可拖动事件创建一个可滚动的 DIV。我设置了一个虚拟滚动条,一切正常,除了能够滚动 iframe ......再次因为相同的起源问题。

所以..

  1. 如果 iframe 内容来自不同的域,是否可以设置 iframe 滚动条的样式?

  1. 如果 iframe 内容来自不同的域,是否可以滚动 iframe?

谢谢!

【问题讨论】:

  • 我认为两者的答案是否定的。您无法访问或操作来自其他域的内容。
  • 人们可能想考虑实际上有很多用户认为滚动条是他们的计算机/软件/浏览界面/主题的一部分,并且不喜欢其他人重新设计它。 只是一个意见。 @Gabriel Santos:好吧..如果你真的想..你可以访问和操作来自另一个域的内容。在您自己的域上使用代理来获取他们的数据,或者更简单,使用yql。然后你只需要在你的 iframe 中展示他们的数据。还有像easyXDM.net这样的“受控”“技术”(如果你控制两个域)
  • 刚刚发现在 html5 中添加到 iframe 的新属性,其中一个删除了同源策略限制。仅在 webkit 中支持

标签: javascript iframe scrollbar same-origin-policy


【解决方案1】:

假设您可以通过某种方式确定网站的大小,您可以将 iframe 的大小设置为该内容的大小...

<html>
<body>
<div style="width:400px; height:400px; overflow:scroll">
    <iframe src="http://www.w3schools.com/" style="width:1000; height:1300"></iframe>
</div>
</body>
</html>

当然,那你需要定期弄清楚网站的大小……

【讨论】:

  • 通过使用 postmessage 将 iframe doc 尺寸发送到站点,然后计算然后调整大小,这非常有效:)
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2011-09-06
相关资源
最近更新 更多