11

我需要扩大 iframe 以使其更大(我无法控制 iframe 内容的源代码)。我正在尝试通过-webkit-transform: scale(1.3)CSS 属性来实现它。

iframe 的内容已正确放大,但是当我尝试触摸 iframe 中的任何控件时,似乎在错误的位置接收到触摸事件(我可以看到控件的“阴影”在触摸错误的位置)。因此事件处理程序不起作用(我怀疑它们没有被调用,因为在错误的位置检测到触摸)。有人遇到过这个问题吗?可以解决吗?

我创建了一个产生问题的测试用例(在 iPad Safari 中尝试):http: //jsfiddle.net/9vem2/

以更易读的格式来源:

父页面(iframe 的容器):

<!DOCTYPE html>
<html>
<head>
    <title>Parent</title>

    <style type="text/css"> 
        iframe
        {        
            left: 200px;
            -webkit-transform: scale(1.3);
        }
    </style>    
</head>

<body>
    <h2>Parent</h2>
    <iframe src="child.html"></iframe>
</body>
</html>

子页面(iframe 内容):

<!DOCTYPE html>
<html>
<head>
    <title>Child</title>
</head>

<body>
    <h2>Child</h2>
    <input type="text"></input>
    <button onclick="alert('hello');">Button</button>
</body>
</html>
4

3 回答 3

3

这感觉像是一个 hacky 解决方案,但由于它正在修复似乎是一个错误的问题,我想这并不重要。我没有在 2D 中缩放,而是将 iframe 在 3D 中移向查看器,请参阅此演示:http: //jsfiddle.net/ianlunn/MSUmS/

<body>制作成 3D 空间,如下所示:

body {
 -webkit-perspective: 800px;
}

然后 iframe 在该 3D 空间中沿 Z 轴向查看器移动:

iframe {
    -webkit-transform: translateZ(130px);
}

这可能需要针对实际应用程序进行修改,特别是如果 iframe 包含在<body>.

于 2012-07-23T12:21:31.860 回答
0

正如您可以在Phonegap Iframe Usage中看到的那样,这些是 iOS 5 上 iframe 实现的一些错误,即使您不使用 phonegap 您也可以找到有用的提示,因为它是基于 HTMS/JS/CSS 的。我引用该文件的最后一段:

在 iOS 5 及更高版本上使用原生滚动时,iFrame 可能会干扰并导致滚动手势被错误解释。这是 Apple 实现中的一个错误,唯一的解决方法是避免使用 iFrame 或使用不同的滚动库(例如 iScroll)。

您是否也尝试过我认为可以将 CSS 文件从父窗口注入 iframe 上的 HTML 的 Javascript 解决方案,因为最终它全部加载到 DOM 中

于 2013-10-01T16:25:25.317 回答
0

使 iFrame 响应式可能更容易,因此如果浏览器调整大小,响应式内容也会如此...这可能会解决它,因为缩放似乎只是缩放框架而不是重新调整其中的内容。

http://jsfiddle.net/D2uBW/

让我知道我与您正在寻找的东西有多接近,并请评论任何想法或修复。

于 2012-07-26T16:27:16.137 回答