文章目录
- 1、iframe在pad中失去滚动条
- 2、pad中iframe弹出模态框
- 3、可输入标签在Safari浏览器中无法输入
- 4、在iframe中的滚动条消失
1、iframe在pad中失去滚动条
iframe在ipad上的兼容性确实有问题
在弹出iframe窗口的时候,可能会失去滚动条
解决方案为
- 在iframe外层嵌套一个空
<div>
元素,给该元素设置滚动条 - 如果是使用layer,可以在iframe渲染完毕以后,给外层元素添加滚动条:
layer.open({
type: 2,
title: CEN.MNJTX,
shadeClose: true,
shade: false,
area: ['893px', '600px'],
//maxmin: true, //开启最大化最小化按钮
content: url,
success: function(layero) {
$(layero).addClass("scroll-wrapper");
//苹果 iframe 滚动条失效解决方按,添加该类则有滚动条
}
});
- 可以将弹出iframe窗口,改为跳转到另外一个页面;建议最好不要用iframe,可以使用弹出模态框,将内容写入模态框中;否则还会有其它问题。
- 给iframe中的所有内容添加一个div并且给该div设置以下样式
推荐使用这种方案,可以避免模态框的弹出位置不固定问题
{height:500px;-webkit-overflow-scrolling:touch;overflow:auto;}
2、pad中iframe弹出模态框
在pad上弹出iframe,iframe中又弹出模态框,模态框的位置出现无规律可循;
原因是iframe的滚动条长度超出了父页面高度
而模态框的位置是依赖父页面定位的,这样就产生了一系列问题
解决方案是:
将模态框写到父页面,在iframe中调用父页面的方法,弹出父页面的模态框,让该模态框的z-index
属性大于iframe的,这样模态框的位置就固定了。
在iframe窗口的作用域中调用该方法,就可以获取的打开该iframe的window对象
然后就可以调用弹出模态框的方法
//在iframe中使用
window.parent //获取父页面window对象
window.parent.openModal() //调用父页面方法
//父页面中的方法
function openModal(){
$("#modalId").modal()//弹出模态框
}
在父页面获取iframe的window对象
//在父页面使用
$("iframe")[0].contentWindow //获取iframewindow对象
3、可输入标签在Safari浏览器中无法输入
这是因为这些标签上面有draggable="true"属性;
在Safari中会渲染出这个样式
input[draggable=true] {
-webkit-user-drag: element;
-webkit-user-select: none;
}
4、在iframe中的滚动条消失
iframe内容中的滚动条有时候会消失,这是因为焦点到了它的父页面
缩小iframe的尺寸,可以看到父页面在滚动