Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从手机上的iframe内部找到设备高度?_Javascript_Html_Css_Iframe_Mobile Safari - Fatal编程技术网

Javascript 如何从手机上的iframe内部找到设备高度?

Javascript 如何从手机上的iframe内部找到设备高度?,javascript,html,css,iframe,mobile-safari,Javascript,Html,Css,Iframe,Mobile Safari,我有一个在iframe中加载的应用程序。代码如下所示(示例): 这为我提供了桌面浏览器上的正确视口;然而,在mobile safari/chrome上,我得到的不是实际的设备高度,而是iframe中所有内容的高度。因此,我得到的不是iPhone 5上的“460”,而是“3000” 如何从iframe内部获取可用的视口?所有现代浏览器都不允许从不同的域(即不同的源)执行此操作。这就是答案 为什么您认为什么是备用路线? 您只能从您的脚本的来源获取信息。因为如果您可以访问例如屏幕对象和任何其他对象,您

我有一个在iframe中加载的应用程序。代码如下所示(示例):

这为我提供了桌面浏览器上的正确视口;然而,在mobile safari/chrome上,我得到的不是实际的设备高度,而是iframe中所有内容的高度。因此,我得到的不是iPhone 5上的“460”,而是“3000”


如何从iframe内部获取可用的视口?

所有现代浏览器都不允许从不同的域(即不同的源)执行此操作。这就是答案

为什么您认为什么是备用路线?

您只能从您的脚本的来源获取信息。因为如果您可以访问例如
屏幕
对象和任何其他对象,您就可以访问它的
原型
链(通过
\uuuuuuuu proto\uuu
)。通过这个链,您可以访问
对象
,并重新定义所有对象的所有getter和setter,例如。并从父页面的iframe控件。这将是失败,facepalm等


找到没有门的房间出口是天真的。

父框架位于不同的域上。我发现屏幕。iframe内部的高度实际上给出了屏幕的正确高度。现在,我使用这个值减去100像素(以计算移动浏览器添加的额外chrome,例如地址栏)。这为我提供了移动浏览器的大致视图——尽管它并不完美。我只是想分享一下我最终使用的东西。是的,我知道你不能在不同的域上运行javascript。问题是如何从不在同一域中的iframe中查找视口高度?必须有另一条路线我认为你回答错了问题。我能够用我的方法在现代浏览器上获得视口。但我不能在移动浏览器上这样做,因为桌面浏览器可以将iframe缩放到100%的视口大小,而iOS Safari不能。但是使用document.documentElement.clientHeight可以获得iframe视口的高度,而不显示父页面感谢您的解释,我理解其中的安全含义。我希望有一个替代路径的原因是,通过检查iframe主体的客户端重量,我能够在桌面浏览器上获得正确的视口,并且在移动浏览器上得到不同的结果。你最近的评论回答了为什么我会看到不同的行为。
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
</head>
<body>
    <iframe src="app_url_on_a_different_domain" height=100% width=100%>
        <html>
            <head>
                <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
            </head>
            <body>...</body>
        </html>
    </iframe>
</body>
</html>
document.documentElement.clientHeight