【发布时间】:2017-12-20 09:55:55
【问题描述】:
我找不到有效的答案。我有一个 iframe(是的,在这种情况下我必须使用 iframe)在 PC 上运行良好,但根本无法在移动设备或平板电脑上加载。
页面上有一些 Javascript,但删除它并不能解决问题。我还尝试将 iframe 的高度和宽度从百分比更改为固定值。我还尝试从 iframe 中删除 src 以外的所有属性,但它仍然没有在 iframe 中加载任何内容。
以下是我的页面的简化版本,使用了我从其他建议中找到的内容。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta content='width=device-width, initial-scale=1.0' name='viewport'>
<style type="text/css">
body, html
{
margin: 0; padding: 0; height: 100%; overflow: hidden; -webkit-backface-visibility: visible;
}
#content
{
position:absolute; left: 0; right: 0; bottom: 0; top: 0px;
}
</style>
</head>
<body>
<script type="text/javascript">
function onFrameLoad() {
do stuff
};
</script>
<div id="content">
<iframe onload="onFrameLoad(this)" id="app" src="https://subdomain.mydomain.com" frameborder="0" height="100%" width="100%"></iframe>
</div>
</body>
</html>
谁能告诉我为什么它不能在移动设备上运行?谢谢
更新:清除平板电脑上的浏览器缓存解决了这个问题,但在移动设备上做同样的事情并没有做任何事情。我还尝试使用我朋友的 iPhone(他们以前从未访问过该网站)但无法加载。
我试图在 iframe 中显示的 URL 在我的手机上的 w3schools 等演示网站上的 iframe 中有效,因此它不是 x-frame options 或浏览器不允许任何 iframe 问题(尽管 x-frame 选项会阻止它运行所有设备,但我已经检查了所有我能想到的)
如果需要,我可以通过消息提供一个实时示例 URL。
【问题讨论】:
-
我想我想通了...子域 URL 由第三方通过 CNAME 记录托管,并且在迁移到新版本时它们暂时“破坏”了 SSL 证书。我认为 android 和 iphone 浏览器的工作方式与 Firefox 相同,如果一个安全站点试图显示混合内容,它就不会显示。如果我使用以前未使用过的浏览器,则该页面不会显示,但如果我使用我已经使用过的浏览器(即使在清除缓存之后),它也会显示。显然,他们应该在这周解决这个问题,所以希望这能解决它。
-
虽然即使在我的平板电脑上清除缓存后,它仍然显示有效的 https 版本,一切都很好......嗯。令人困惑。
-
您是否遵守跨域资源共享 (CORS) 政策? iframe 内容需要在响应中正确设置
Allow-Access-Control-Origin标头,否则现代网络浏览器将阻止响应以保护用户。 -
@JakeHolzinger iFrame 在笔记本电脑和平板电脑以及第三方网站(W3Schools 等)上正确显示,所以是的,我认为没关系。
-
您是否在stackoverflow.com/questions/23355179/… 中检查过解决方案。您在 iframe 中面临的问题似乎与此相同。