视口在iFrame中调整大小

时间:2011-05-26 19:05:38

标签: iframe mobile extjs viewport

我正在尝试在Sencha中创建一个显示iframe的Carrousel。
基本的想法是我有一堆HTML文件已经配置为可以在iPad上查看。
所以文件有视口和所有配置。

我创建了一个简单的转盘:

var rootPanel;
Ext.setup({
    onReady: function() {
        rootPanel = new Ext.Carousel({
            fullscreen: true,
            layout: 'card',
            items: [
                { html: '<iframe src="http://localhost/file1.html">' },
                { html: '<iframe src="http://localhost/file2.html">' },
                { html: '<iframe src="http://localhost/file3.html">' },
            ]
        });
    }
});

HTML文件本身如下:

<!DOCTYPE html>
  <html>
    <head>
        <title>Untitled Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width; initial-scale=0.5; minimum-scale=0.5; maximum-scale=1.0;user-scalable=no">
    </head>
    <body>
        <div id="container">
            <div style="margin:0;padding:0;position:absolute;left:0px;top:0px;width: 1536px; height: 2048px;text-align:left;z-index:0;">
                <img src="image.jpg" style="width: 1536px; height: 2048px;"></div>
        </div>  
    </body>
</html>

除了不尊重视口并且iframe的内部没有像它应该的那样缩小之外,系统排序有效。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不熟悉sencha,但是iframe没有能力将高度设置为百分比(100%)。因此,如果sencha将宽度和高度设置为100%,它将不会垂直扩展,而应该水平填充父级。

这是你看到的吗?

尝试手动将iframe的高度设置为px中足够大的尺寸。如果您可以控制iframe的内容,那么您可以添加一些javascript来与父进行通信,并告诉它适当调整大小。

答案 1 :(得分:0)

在iframe和内部html上设置100%

var rootPanel;
Ext.setup({
    onReady: function() {
        rootPanel = new Ext.Carousel({
            fullscreen: true,
            layout: 'card',
            cls: 'some-cards',
            items: [
                { html: '<iframe width="100%" height="100%" src="http://localhost/file1.html">' },
                { html: '<iframe width="100%" height="100%" src="http://localhost/file2.html">' },
                { html: '<iframe width="100%" height="100%" src="http://localhost/file3.html">' },
             ]
        });
    }
});

你可以链接这样的东西。

.some-cards .x-innerhtml {
    height: 100%;
}