【发布时间】:2015-09-20 22:52:54
【问题描述】:
喂,
这是我的测试页面的样子:
蓝色区域是父页面,绿色区域是运行 ExtJS 应用程序的 IFrame(内部带有标签的简单视口)。
如果网站是在触摸设备(iPad、Android 平板电脑等)上执行的,则无法通过在 IFrame(绿色区域)上“擦除”来滚动页面。必须在蓝色区域上擦拭才能滚动页面。
这在 ExtJS v4.2.1 中可以正常工作(参见下面的链接)。
测试站点:
https://skaface.leo.uberspace.de/ScrollTest/Ext510/(未按预期工作,使用 ExtJS v5.1.1)
https://skaface.leo.uberspace.de/ScrollTest/Ext421/(按预期工作,相同代码但使用 ExtJS v4.2.1)
测试代码:
父站点(index.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%;">
<head>
<title>Test</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>
<body style="margin: 50px; background-color: blue;">
<iframe src="frame.html" width="100%" height="1400" style="border: none;"></iframe>
</body>
</html>
IFrame (frame.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 100%;">
<head>
<title>Test</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="https://extjs.cachefly.net/ext/gpl/5.1.0/packages/ext-theme-neptune/build/resources/ext-theme-neptune-all-debug.css" />
<script type="text/javascript" src="https://extjs.cachefly.net/ext/gpl/5.1.0/build/ext-all-debug.js"></script>
<script type="text/javascript">
Ext.onReady(function() {
Ext.create('Ext.container.Viewport', {
style: { 'background-color': 'yellowgreen' },
layout: 'fit',
items: [{
xtype: 'label',
text: 'Ext version: ' + Ext.versions.extjs.version,
margin: 16
}]
});
});
</script>
</head>
<body>
</body>
</html>
我非常感谢这个解决方法,因为它实际上使我的网站在移动设备上毫无用处,即使它们在 ExtJS 4.2.1 上运行得非常好。
感谢和问候
Ps.:我已经发布了一个错误报告 in the sencha forums,但由于在知道之前我没有得到任何帮助,所以我也在 stackoverflow 上试试运气......
【问题讨论】:
-
为什么不能完全移除外部容器,直接显示内部内容,在 body 上使用 50px 的 padding 之类的?
-
@davidcondrey 谢谢你的链接,我下周去看看。
-
@BoffinbraiN 这只是一个过于简单的测试用例。我的“现实生活中的应用程序”嵌入在复杂的网站中,无法阻止 IFrame 的使用......
-
@davidcondrey 虽然这篇文章至少让我了解了为什么在 IFrame 内滚动不再起作用,但它并没有为我的问题提供任何解决方案。无论如何感谢它。我希望它至少能引导我朝着正确的方向前进……
标签: javascript iframe extjs extjs5