`
flex_莫冲
  • 浏览: 1092298 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

iframe in ipad safari

 
阅读更多
今天要在web中嵌套一个网址或本地HTML,用到了iframe,在电脑上设置scrolling=‘auto’,宽度高度,会有滚动条出现。而在ipad上会全部显示整个网页的宽度高度。scrolling属性无效。原来在html5中的iframe已经只有剩下src的属性。
但是若设置scrolling=‘no’.还是会生效的。页面只显示定义的高度和宽度的大小。设置overflow:hidden都没用。



怎么让ipad safari 中的iframe的内容在固定大小中可滚动?

网上说要用seamless属性。直接写个seamless。但是这个属性ipad的safari不支持。chrome是支持的。

IE6 – Windows: no support
IE7 – Windows: no support
IE8 – Windows – Windows: no support
IE9 beta – Windows: no support
Firefox 3.6 – Windows: no support
Firefox 3.6 – OSX: no support
Firefox 4.0 – beta Windows: no support
Firefox 4.0 – beta OSX: no support
Safari OSX: no support
Chrome 7 – Windows: no support
Chrome 7 – Windows: no support
Chrome 9 – OSX: no support
Opera 11 – OSX: no support

测试例子:
http://www.maxdesign.com.au/jobs/example-seamless/

所以以上方法都无法解决ipad safari中iframe滚动的问题。

解决办法:
在iframe外加一层div,设置样式-webkit-overflow-scrolling:touch; overflow: scroll;
让超出div的内容可以通过touch来滚动。

另外,如果iframe的src不是网址,而是本地的html,则需要给HTML的DOM添加监听事件,让html的body可以监听到touch事件,让嵌套的html也可以滚动。
var toScrollFrame = function(iFrame, mask) {
					if (!navigator.userAgent.match(/iPad|iPhone/i))
						return false;
					//do nothing if not iOS devie

					var mouseY = 0;
					var mouseX = 0;
					jQuery(iFrame).ready(function() {//wait for iFrame to load
						//remeber initial drag motition
						jQuery(iFrame).contents()[0].body.addEventListener('touchstart', function(e) {
							mouseY = e.targetTouches[0].pageY;
							mouseX = e.targetTouches[0].pageX;
						});

						//update scroll position based on initial drag position
						jQuery(iFrame).contents()[0].body.addEventListener('touchmove', function(e) {
							e.preventDefault();
							//prevent whole page dragging

							var box = jQuery(mask);
							box.scrollLeft(box.scrollLeft() + mouseX - e.targetTouches[0].pageX);
							box.scrollTop(box.scrollTop() + mouseY - e.targetTouches[0].pageY);
							//mouseX and mouseY don't need periodic updating, because the current position
							//of the mouse relative to th iFrame changes as the mask scrolls it.
						});
					});

					return true;
				};

				toScrollFrame('.myFrame', '.myMask');



最终代码
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="apple-mobile-web-app-status-bar-style" content="black">
		<title>wrapScroller demo</title>
		<link rel="stylesheet" href="../style/wrapScroller.css" type="text/css" media="screen" />
		<script type="text/javascript" src="../jquery-1.8.0.min.js"></script>
		<script type="text/javascript">
			
		</script>
	</head>
	<body style="background: #ccc;">
		<div>
			HEADER - use 2 fingers to scroll contents:
		</div>
		<div id="scrollee" style="width:300px;height:300px;-webkit-overflow-scrolling:touch; overflow: scroll;">
			<iframe id="object" height="90%" width="100%" type="text/html" src="http://en.wikipedia.org/"></iframe>
		</div>
	</body>
</html>





参考:
http://stackoverflow.com/questions/6139564/iframe-size-on-ipad
http://jsfiddle.net/CobaltBlueDW/zHR8s/
http://stackoverflow.com/questions/4804604/html5-iframe-seamless-attribute
分享到:
评论

相关推荐

    Open IFrame In News Table.crx

    Open IFrame In News Table 一款Chrome扩展插件,通过该插件可以右键将网页嵌入的 IFrame 框架 快速使用 新tab 页签打开。

    safari,opera嵌入iframe页面cookie读取问题解决方法

    然而,由于浏览器的安全策略,特别是对于第三方cookie的处理,开发者可能会遇到在特定浏览器如Safari、Opera以及某些使用特定内核的搜狗浏览器中无法读取`iframe`内的cookie的问题。这个问题主要源于浏览器对第三方...

    解决IE,Firefox,chrome,safari浏览器中iframe显示高度自适应问题

    ### 解决IE、Firefox、Chrome、Safari浏览器中iframe显示高度自适应问题 在Web开发中,`iframe`(Inline Frame)元素常被用于嵌入另一个HTML文档到当前页面中,这种技术为开发者提供了极大的便利,例如加载广告、...

    iframe自适应高度(兼容目前所有主浏览器)

    iFrame 自适应高度(兼容所有主浏览器) iFrame 自适应高度是前端开发中常见的问题,很多开发者在搜索引擎中搜索相关解决方案,但大多数文章只能解决静态高度的问题,而忽视了 JS 操作 DOM 之后的动态同步问题。...

    vue基于iframe优雅实现全新的微前端方案,继承iframe的优点,补足 iframe 的缺点,让 iframe 焕发新生

    基于iframe优雅实现全新的微前端方案,继承iframe的优点,补足 iframe 的缺点,让 iframe 焕发新生。 适合人群:具备一定编程基础,工作1-3年的研发人员 能学到什么: 1、使用postMessage方法来完成基座项目和子...

    iframe内容高度 iframe自适应高度终极解决Iframe设置高度后无法缩小问题

    在网页开发中,`&lt;iframe&gt;`元素是一种非常实用的工具,它允许我们在一个页面中嵌入另一个页面的内容,实现页面的组合或者隔离加载。然而,`&lt;iframe&gt;`的高度自适应问题常常困扰着开发者,尤其是当`&lt;iframe&gt;`内部的内容...

    iframe自适应高度,亲测完美兼容IE6-9,Chrome,Opera,firefox,safari

    因为有一个项目要用到iframe自适应高度,网上搜索了以下结果无数,不过看来看去都是那...iframe自适应高度,亲测完美兼容IE6_7_8_9,Chrome谷歌浏览器,Opera欧朋浏览器,FireFox火狐浏览器,Mac Safari浏览器等五大浏览器

    iframe跨域常用问题和iframe页面自适应

    本篇文章将深入探讨两个关键知识点:`iframe`跨域问题以及`iframe`页面的自适应。 一、`iframe`跨域问题 跨域是Web开发中的一个重要概念,它限制了浏览器从一个源获取另一个源的资源,以保护用户的安全。当`iframe...

    iframe自适应高度和宽度

    // extra height in px to add to iframe in FireFox 1.0+ browsers var FFextraHeight = getFFVersion &gt;= 0.1 ? 16 : 0; function dyniframesize(iframename) { var pTar = null; if (document.getElementById) ...

    iframe自适应宽高

    这个库允许的高度与同跨域iframe来适应他们所包含的内容的宽度自动调整大小。它最常见的问题与使用iframes提供一系列的功能,其中包括: 高度和宽度大小的iframe内容大小。 作品以多个嵌套的iframe。 跨域iframe域...

    iframe对另一个iframe控制的Demo

    本实例“iframe对另一个iframe控制的Demo”展示了如何通过JavaScript或者jQuery实现一个iframe对另一个iframe的交互,以及如何控制iframe的显示与隐藏。这种技术广泛应用于构建复杂的Web应用程序,如页面内的多窗口...

    JS去除iframe滚动条的方法

    文章中提到Internet Explorer、Google Chrome、Opera和Safari等浏览器在设置`scrolling`属性时可能会遇到问题。这可能是因为某些浏览器不遵循标准,或者有特定的实现方式,导致属性设置未能按预期工作。因此,在实际...

    iframe里无右键菜单

    然而,有时我们可能希望在`iframe`内禁用默认的右键菜单,以防止用户通过右键点击执行某些操作,比如复制、查看源代码等。标题"iframe里无右键菜单"正是针对这一需求,描述中提到的解决方案是创建一个既简单又实用的...

    iframe消息监听传递

    `iframe`跨域消息传递是解决这个问题的关键技术,它允许不同源的`iframe`和主页面之间安全地交换数据。 标题"iframe消息监听传递"主要涉及到两个核心概念:`postMessage`和`message`事件。这两个API是HTML5引入的,...

    layuiadmin-iframe3.zip

    layuiadmin-iframe3.zip是一个包含layui框架的演示代码压缩包,专用于展示如何在Web应用中集成layui的iframe功能。layui是一款优秀的前端轻量级框架,以其简洁、强大的特性和丰富的UI组件,深受开发者喜爱。这个...

    div被iframe遮住的几种情况及解决方法

    在前端开发过程中,DIV元素被IFRAME遮挡是一个常见的问题,尤其是当页面布局复杂或存在多层嵌套的元素时。以下将详细阐述几种DIV被IFRAME遮挡的情况,并提供相应的解决方法。 首先,要了解的是IFRAME是一种HTML元素...

    js获取控制iframe中iframe的src

    js控制/获取a.html中iframe加载的b.html中的iframe,很多人都以为getElementById可以直接获取,其实不行的,以上代码就解决了这个问题,js控制iframe加载页面的iframe,不过测试只在IE和火狐通过,谷歌不行,其他自...

    iframe兄弟页面相互调用

    在多页面交互的场景下,`iframe`中的子页面与父页面以及与其他兄弟`iframe`之间的通信就显得尤为重要。本文将详细讲解如何实现`iframe`兄弟页面之间的相互调用。 首先,理解`iframe`的结构是关键。一个`iframe`元素...

    iframe高度自适应.pdf

    ### iframe高度自适应技术详解 在网页开发过程中,经常会遇到需要在一个页面中嵌入另一个页面的需求,这通常通过HTML的`iframe`元素实现。然而,一个常见的问题是当嵌入的内容高度变化时,如何使`iframe`的高度能够...

Global site tag (gtag.js) - Google Analytics