android webview 正常显示 Html中的 iframe和frame
来源:互联网 发布:如何避免无聊闲谈知乎 编辑:程序博客网 时间:2024/06/05 10:55
我们一般在使用android自带的webkit进行开发是遇到如下问题,
当网页中的页面本来定义大小为
<meta name="page-view-size" content="1280*720">
我们在调用时还是按照页面本来的大小写frame时
<div style="position:absolute; left:0px; top:0px; height:720px; width:1280px; " id="frameContrl1_div"><frame src="none.htm" name="frameContrl1" width=100% height=100% scrolling="yes"></iframe></div>
会出现如下的界面,
我们发现在按上下左右的时候页面在晃动。按理说页面大小和屏幕大小一致本来不应该晃动,为什么出现这种显现呢。在郁闷了很久之后发现,原来在fream元素里面有一个frameborder项,该项是用来控制是否显示边框的。这里补充一些小知识:
Border 指定框架边框的宽度(以像素为单位)。frameborder 指定框架边框是否以三维方式显示。yes或1----三维边框;no或0----平面边
frameborder 属性 -- HTML框架边框的显示方式 此属性应使用在frame标签中 frameborder属性取值: 1 -- 有边框 0 -- 无边框 默认值为1 border,中文"边框"的意思W3school解释:属性 值 描述 frameborder规定是否显示框架周围的边框。
- 0
- 1
以上是从网上挡的一些解释,大概意思明白就行,本人菜鸟,具体意思也不是很了解。
一般情况我们定义的页面小于屏幕大小,这是不容易出现问题。但当页面和屏幕一样大的时候,问题就出现了。由于页面和屏幕本来一样大,加上边框就回大于屏幕。而android4.2上面对于fream该元素此项的默认设置为ture。也就是默认有边框,所以就回悲剧的出现边框晃动。修改的方法就是在webkit\soure\html\HTMLFrameElement.cpp文件中修改m_frameBorder的值为false即可。
如果页面中定义的是iframe而非frame则比较棘手。因为iframe本身没有自己的描述边框的成员变量,android自己的注释是这样的:// Frame border doesn't really match the HTML4 spec definition for iframes. It simply adds a presentational hint that the border should be off if set to zero.
所以只能默认就让该属性一直默认为边框宽度为零。需要在webkit\soure\html\HTMLIFrameElement.cpp文件中的void HTMLIFrameElement::parseMappedAttribute(Attribute* attr)函数中仿照if (attr->name() == frameborderAttr)的情况,在调用其他属性时触发该属性,目前是唯一解决方法。注意,这个设置本身是有漏洞的,如果ifream本身是需要支持边框的,而且网页设置边框的属性在宽度之前就会发现,宽度设置没有起到作用。
我自己的测试页面如下:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="page-view-size" content="1280*720"></head><body style="position:absolute; width:1280px; height:720px; left: 0px; top: 0px;" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" bgcolor="transparent" onLoad="init()" onUnload="exit()"><!-- <img style="position:absolute; left:1050px; top:30px;visibility: visible ;" src="images/none.gif" id="PlayIconImg" /> --><!-- iframe1 --><!--<div style="position:absolute; left:0px; top:0px; height:720px; width:1280px; " id="frameContrl1_div"><iframe src="none.htm" name="frameContrl1" width=100% height=100% scrolling="yes"></iframe></div>--><div style="position:absolute; left:0px; top:0px; height:720px; width:1280px; " id="frameContrl1_div"><iframe src="none.htm" name="frameContrl1" width=100% height=100% scrolling="yes"></iframe> </div></body></html>
- android webview 正常显示 Html中的 iframe和frame
- android webview 正常显示 Html中的 Frameset iframe
- html iframe和frame
- Html中的iframe,frameset frame
- HTML中的Frame与Iframe框架属性
- HTML 框架[frame&iframe]
- android webview shouldOverrideUrlLoading html iframe内部链接
- Android webview加载iframe标签的HTML
- android WebView中loadUrl方法显示本地html中的图文
- android WebView中loadUrl方法显示本地html中的图文
- android webview显示HTML代码
- html 随记------关于frameset、frame、和iframe的区别
- 利用WebView加载HTML代码时解决图片正常显示
- jquery操作iframe中的HTML 在IE6、Mozilla Firefox 正常
- frameSet,frame和iframe
- <iframe>和<frame>区别
- <iframe>和<frame>区别
- Android webview 和html 交互
- head first设计模式之单例模式 c++解读
- IOS 正则表达式
- 主打隐形技术 路虎全新SUV概念车将亮相
- Javascript:this用法整理
- Fragment提交commit时候异常(Can not perform this action after onSaveInstanceState)
- android webview 正常显示 Html中的 iframe和frame
- H3C交换机典型(ACL)访问控制列表配置实例
- 八大排序算法源码 + 耗时长度比较
- Objective-C在ARC下结合GCD的单例模式和宏模版
- JAVA SSH 框架介绍
- TCP/IP
- 分布式发布订阅消息系统 Kafka (A distributed publish-subscribe messaging system)
- Android HorizontalScrollView 实例
- 网页特效 工具