【问题标题】:JavaScript - Detecting Scrollbars in a Cross-Domain Iframe?JavaScript - 检测跨域 iframe 中的滚动条?
【发布时间】:2011-06-10 18:15:17
【问题描述】:

我正在将一个跨域页面(我无法控制)加载到 iframe 中。

我想知道这是否会导致滚动条出现在我页面的 iframe 中。

我的印象是,由于跨域安全策略,这无法通过任何直接检测或巧妙推断来完成(至少在 Firefox 中)。

请仅在您有直接经验成功地自己做这件事时才回答这个问题——或者尝试一切并放弃。

(那些你想推荐给我的其他讨论不适用于无法控制嵌入页面的跨域 iframe。如果你认为 jQuery 必须为此提供一些东西,请先自己测试一下,以确保.)

TIA -- 我没有 SO 帐户来回复您的回答。(现在做)

【问题讨论】:

  • 好吧,在我阅读您问题的第 4 段之前,我打算回答一个潜在的解决方案。无论如何,祝你好运。
  • ......因为最后一句话,我想过不回答;)

标签: javascript iframe scrollbar


【解决方案1】:

由于浏览器的安全模型,不可能这样做。如果可能,那将是一个安全问题,必须加以解决。请参阅我的complete answerthis similar question 以获得更完整的说明。

【讨论】:

  • 我仍然是偶然登录的。谢谢你。 Mozilla 是否在我能读到的任何地方表达了您的安全原则——以确认我应该永远放弃所有测试和所有希望!我问这个是因为我发现至少有一个其他主流浏览器可以让你检测几个 Firefox 没有的与滚动相关的属性。
  • 在 HTML5 中通过跨域窗口对象访问的限制规定,任何检测这种情况的方法都应该抛出 SECURITY_ERR。所有主流浏览器都打算遵循 HTML5。
  • 我在 W3 上找到了一些关于跨域安全的一般主题的文档,但它们似乎处理的是在域之间启用完整的类似 AJAX 消息传递的方案,而不是在简单检测外部页面的宽度和高度和/或本地页面呈现的滚动条状态时指定禁止。 (这样做甚至不一定需要读取外部页面本身的属性——大小可以由外部页面在本地布局上的效果决定,因此本质上不是“跨域通信” "。)
  • Patricia:SOP(同源策略)不是由 W3 定义的,而是由浏览器供应商自己定义的。它不会更改 W3 发布的任何规范,但实现了与安全相关的限制 - 例如 window.parent 仍然指向父级,您不能在不引发异常的情况下对其调用 [[get]] 。如果没有其他页面的支持,您将找不到任何方法来获取大小 - 关于其布局,这一切都发生在包装页面视口内,因此不会对包装文档产生任何更改。
猜你喜欢
  • 2013-03-25
  • 2011-03-15
  • 1970-01-01
  • 2011-07-03
  • 2016-03-12
  • 2022-06-24
  • 1970-01-01
  • 2017-09-02
  • 2010-10-15
相关资源
最近更新 更多