此文opera mini浏览器(注意:不是opera浏览器)的兼容的一些总结。

opera mini浏览器是通过代理服务器先对网页进行获取和压缩转换,再讲转换而成的轻量级的二进制标记语言,OBML传到浏览器,再由浏览将OBML显示为页面。

opera mini浏览器的好处:

  1. 客户端很轻薄(获取网页,渲染网页都在代理服务上,客户端只需识别OBML)
  2. 对于很多旧手机(类似以前的塞班手机,和一些比较低级的Android机)来说,它们不像苹果或者高级Android机那样的高配置去用pc同样的渲染方法来渲染网页。通过这种代理方法,非智能机仍然能够访问到全新智能网页,享受许多 Web 增强功能。
  3. 通过服务器压缩技术,Opera mini浏览器最多可以帮您减少 90% 的流量。
  4. 网页浏览速度也提升了很多。因为主要的数据传输是发生在代理服务器和网站服务器之间,服务器都可提供高速度的连接服务。

opera mini浏览器的坏处:

然而随着web发展,它已经快成为pc的IE一样,成为移动端兼容的一座大山。。。它不支持一些css和js

css:

  1. 支持 border,但是只支持solid,不支持dash和dotted
  2. 不支持 line-height,实现垂直居中的可选方法:使用padding
  3. 支持 table,但是可能会有水平滚动条(尽量避免使用table作为layout)
  4. 支持 frame,但是可能超出frame范围的内容会被截断(尽量避免)
  5. 默认情况下, 图片会被压缩。但是如果你需要高质量的图片保留,可以通过设置。。。。。。。
  6. 基本上,任何 动画(包括动态的gif,动态的svg,<blink>,<marquee>, 还有css3的转换,过渡和动画)都不支持。因为代理服务的预渲染可能只会返回动画的一个snapshot回来。
  7. mini浏览器会尽量先使用你的网页所要求的 字体。但是会根据具体情况有以下调整:
    • 有些机子如果没有你要的字体,它会使用设备上低分辨率的大号字体。因此你需要特别注意字体大小不同会不会导致你的布局,你的样式会有很大改变(例如:边框包不住内容,左右不对齐,或者某个div因为字体变大撑大后遮挡住其他div)。
    • 而且整个页面只会使用同一种字体,即使你不同位置使用的font-family都是设备上有的。
    • 支持<bold>标签,除了italic之外的text-decoration,和<sub> and <sup> 标签
    • 不支持font-size。

js:

  1. 不支持后台持续运行js,例如:setTimeoutsetInterval或者timed ajax等通过时间回调来实现后台持续运行的js在opera mini这里无效。
  2. 只有事件触发(例如: onload)和用户操作(例如:点击按钮、链接)才能使js运行。
  3. 支持loadunload事件,支持mousedown, mouseupclick事件,支持hyperlinks
  4. 表单支持提交和输入的change事件。输入的change事件可用于提交表单前的检查。
  5. 不支持除了mousedown, mouseup, mouseover 和 click事件之外的其他鼠标事件resize和scroll事件keypress事件的监听
  6. 不支持window.open新开个窗口,只会覆盖原来窗口,打开到相应url。不支持window.close
  7. 支持用户操作触发的ajax,不支持由时间触发的ajax,例如:setTimeout和setInterval触发的ajax。(?时钟在opera mini怎么实现)
  8. RTSF协议的链接,不会在代理服务器上进行,而是依赖于本机设备的媒体播放器(如果本机设备没有能够支持的媒体播放器,可能会导致无法使用)

其它乱七八糟的问题:

  • opera mini浏览器使用自己的代理服务器来访问网络。因此,就算你本机翻墙或者加入了你所访问网站所允许访问的域,代理还是没法一起翻墙或入域。如果你是在公司或学校等内部开发机上开发的测试网站,那很不幸,opera mini浏览器无法访问,因而无法测试。
    我为了能够方便我开发,曾尝试
    1. 在电脑上安装虚拟机
    2. 通过chrome os的apk运行环境安装apk
  • 其实我在做opera mini兼容问题时,还遇到一个很严重的问题,就是链接操作和点击操作触发的ajax并不是很稳定。目前不知道原因。我的猜测:用户操作后需通知代理服务器,代理服务器去执行一些操作(包括跟网站服务器进行通信)再返回渲染页面给用户,这是否导致了其不稳定。

参考资料

Opera Mini: Web Content Authoring Guidelines