[英]Determine the width of an iframe's parent container inside the iframe on mobile pbrowsers
我们的客户托管自己的HTML网页,我们将这些网页的某些内容作为嵌入式iframe
元素提供。 (这意味着它们的内容和我们的内容具有不同的域来源。)它们通常提供一个包含我们的iframe
元素的div
元素。 (请注意,我们无法控制他们的网页内容,只能控制我们的iframe
内容。)
iframe
包含JavaScript代码,该代码确定它可以填充的最大尺寸,该尺寸应为外部div
的尺寸。 该最大宽度用于控制(显示/隐藏) iframe
内容内的滚动元素。
问题在于,在某些移动浏览器上 , iframe
的内容未正确限制(限制)为其父<div>
的大小/边界。 换句话说, iframe
的尺寸比其父div
更大(更宽)。 (这在桌面浏览器上不是问题。)
因此,问题是 : iframe
代码如何确定其父元素(尤其是跨域)的正确大小? 看来,我能得到的最好的就是iframe
本身及其子元素的外观尺寸。
在父div
添加overflow:hidden
可以正确隐藏/ div
超出div
边界的iframe内容,但是iframe
代码仍然无法确定该尺寸(宽度)实际是多少。 (同样,在桌面浏览器上,这显然不是问题。)
注意:类似的问题(例如, 从检测的iframe中的iframe的宽度 )地址访问的尺寸的问题iframe
从在其自身内iframe
; 我需要访问iframe
父容器的尺寸。
解
我最终将iframe
元素放置在其自己的div
元素中,并访问了该包含元素的宽度。 ( iframe
似乎无法直接访问其父级。)
您的iframe页面必须与其他页面对话。 这是我在Github上的示例仓库,这就是我在说的...
编辑:
每个外包页面:
function windowWidth(){
return document.getElementById('content').clientWidth;
}
iframe页面:
window.onload = function(){
setInterval(function(){
var iframeWidth = document.getElementById('iframe').contentWindow.windowWidth();
document.getElementById('iframe').style.width = iframeWidth + "px";
}, 10);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.