IOS不支持iframe的解决办法

ios 不支持 iframe 的完美解决方法最近做微信公众号页面,因为入口不同,需要把公共页面抽取出来,然后根据不同的值,传递给后台不同的入口。刚开始用iframe页面嵌套(第一次尝试使用),但发现iOS系统对iframe嵌套页面的高度和定位控制的不到位,当嵌套的子页面的高度大于父页面的高度,且子页面中有触发弹框事件时,这时,如果子页面高度远远大于父页面高度,就会出现弹框找不到的情况,其实可能是在视口以下,弹框的位置只是相对于子页面来定位,并没有相对于视口定位。

尝试了好多种方法,均不理想,而安卓系统则表现良好,于是想到,iOS系统可直接做页面跳转,而安卓系统则正常使用iframe(如果安卓系统直接做页面跳转,会有问题,故使用iframe),

直接看代码:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

</head>

<body>

<script src="js/zepto.min.js"></script>

<script>

$(function() {

var originId = sessionStorage.setItem(‘originId‘, ‘3‘); //originId为后台需要判断是哪个入口的值

var u = navigator.userAgent;

var isAndroid = u.indexOf(‘Android‘) > -1 || u.indexOf(‘Adr‘) > -1; //android终端

var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

if (isAndroid) {

//安卓终端使用iframe

var winH = $(window).height();

var iframe = document.createElement(‘iframe‘);

iframe.src = "index_common.html";

iframe.style.width = ‘100%‘;

iframe.style.height = winH + ‘px‘;

iframe.style.border = ‘0 none‘;

iframe.setAttribute(‘scrolling‘, ‘auto‘);

document.body.appendChild(iframe);

} else if (isiOS) {

//iOS终端直接页面跳转

location.href = ‘index_common.html‘;

} else {

location.href = ‘index_common.html‘;

}

})

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/bugo/p/9133157.html

时间: 2024-08-03 00:04:18

IOS不支持iframe的解决办法的相关文章

php中curl不支持https的解决办法

在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl 该错误信息表示php当时编译时使用的curl库不支持https, 验证方法为你的curl安装目录/bin/curl  -V  显示如下:Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp这表示curl是不支持 https的 为了支持https,需要下载源

谷歌浏览器Chrome不再支持showModalDialog的解决办法

问题重现 弹出窗口编码: JavaScript 0 1 2 3 4 5 6 7 var obj = new Object(); var retval = window.showModalDialog("request.aspx",obj,"dialogWidth=500px;dialogHeight=300px"); if (retval == null) { ... }else { ... } 浏览器异常: Shell 0 1 Uncaught TypeError

使用的 SQL Server 版本不支持数据类型“datetime2”解决办法

错误原因,在使用ado.net entity的时候,entity使用的数据库是sqlserver 2008,但后来实际使用中使用的数据库是sqlserver 2005 使用的 SQL Server 版本不支持数据类型“datetime2” The version of SQL Server in use does not support datatype ‘datetime2 解决办法 Open your EDMX in a file editor (or “open with…” in Vis

让IE完美支持HTML5(css3)解决办法

貌似以前与大家分享过此类问题,HTML5/CSS3那些炫丽实用的效果,真得让人很眼谗,但悲催的IE浏览器,只有IE9才支持HTML5,这让我们很失望啊,但真的就没有一点办法了吗?其实补救方法还是有的,下面介绍的几种方法,可让客户端浏览器完美支持CSS3.HTML5: 第一种方法:IE9以下版本的IE将创建HTML5标签, 非IE浏览器会忽略这段代码,因此不会发生http请求,也就不影响网页执行效率. <!--[if lt IE9]> <script> (function() { i

Can&#39;t find keyplane iOS模拟器键盘不显示解决办法

静下心来学技术,新一波的问题再度来袭 学习swift的时候做一个app,需要用到数字键盘,但是在调试了几次后数字键盘便出不来了,控制台中弹出这样一个错误 Can't find keyplane that supports type 4 for keyboard iPhone-PortraitChoco-NumberPad; using 2382260317_PortraitChoco_iPhone-Simple-Pad_Default,查资料好像是xcode的一个bug,苹果居然放任如此严重的一

ios 静态库冲突的解决办法

最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理解,我来深入的写一写. 我的开发环境 Mac OS X 10.10.1 Xcode 6.1.1 (6A2008a) Cocos2d-x 3.2 新浪微博 SDK for iOS 2015 年 1 月 5 日从 github clone 的版本 遇到的问题 根据新浪微博 SDK 附带的文档接入项目后,

关于IOS二维码创建、扫描的使用方式(IOS,ZBar支持64位解决办法)

在IOS开发过程中,有时需要使用到二维码扫描及二维码生成,现在介绍我自己测试并通过的方法: (一) 二维码生成方式: 需要工具:libqrencode库,QRCodeGenerator.h,QRCodeGenerator.m文件,说实话,在网上找这两个文件确实废了我不少的功夫,下面我会把详细的下载地址贴上,相信定能节省大家不少的时间. 有了以上两个文件之后你就可以将它添加到你到工程中,使用相应的接口API便可以完成相应的功能. imageview.image = [QRCodeGenerator

IOS lib(.a)库冲突解决办法

在引入第三方lib(.a)库时,经常会由于第三方lib库中又引入同你现有工程相同的开源代码而造成.o冲突,最近在集成汉王名片识别时发生ASIHttp的.o冲突.我想说的是像这种开源的使用率很高的源代码本不应该包含在lib库中,就算是你要包含那也要改个名字是吧.不过没办法现在人家既然包含,我们就只有想办法分离了. 1.依次查看lib库所支持的框架类型.i386:模拟器,armv7:iphone4,armv7s:iphone5,iphone5s,arm64:iphone6,iphone6p. 1 a

ie不支持getElementsByClassName的解决办法

目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管:如果不支持,就在document对象里加入getElementsByClassName这个方法,按兴趣的朋友可以了解下 if (navigator.appName == 'Microsoft Internet Explorer') { document.getElementsByClassName = function() { var tTagName = "*"; if (arguments.length > 1)