问题 从iframe内部检测高度和宽度


我怀疑这实际上是可能的,但我准备纠正。

我需要的是能够从iframe中检测iframe的宽度和高度,所以如果是iframe src 是 iframeContent.html 我需要能够在此页面上显示值。

我无法控制仅托管iframe的页面iframe的内容。

这可能吗?


4848
2017-10-18 14:17


起源



答案:


无论页面是否加载,您都可以随时获取网页尺寸 iframe 或者一个新窗口它总是以相同的方式工作。这是我以前发现的功能 window 尺寸,您也可以用它来获得 <iframe> 尺寸。

function alertSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  window.alert( 'Width = ' + myWidth );
  window.alert( 'Height = ' + myHeight );
}

12
2017-10-18 14:21



您真的应该提供一个指向您复制和粘贴答案的链接。这样就可以给予应有的信用。此外,我认为在这个时代编写代码时我们可以安全地忘记IE 4。 - Andy E
window.innerWidth / Height报告IFRAME的大小,而不是浏览器的大小(例如,如果浏览器窗口的大小比包含的IFRAME小,则浏览器总是报告IFRAME的大小) - GlennG
在我的IE9中不起作用 - 返回0 - ILya


答案:


无论页面是否加载,您都可以随时获取网页尺寸 iframe 或者一个新窗口它总是以相同的方式工作。这是我以前发现的功能 window 尺寸,您也可以用它来获得 <iframe> 尺寸。

function alertSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  window.alert( 'Width = ' + myWidth );
  window.alert( 'Height = ' + myHeight );
}

12
2017-10-18 14:21



您真的应该提供一个指向您复制和粘贴答案的链接。这样就可以给予应有的信用。此外,我认为在这个时代编写代码时我们可以安全地忘记IE 4。 - Andy E
window.innerWidth / Height报告IFRAME的大小,而不是浏览器的大小(例如,如果浏览器窗口的大小比包含的IFRAME小,则浏览器总是报告IFRAME的大小) - GlennG
在我的IE9中不起作用 - 返回0 - ILya