返回列表 发帖

[改进建议] IE8兼容模式的逻辑问题

本帖最后由 moonlite 于 2010-4-12 11:19 编辑

前些日子安装了IE8,今天好好地研究了下IE8以及IE8下TW3的正常模式和兼容性视图,发现工具菜单中“用IE8模式显示页面”在功能逻辑关系上有些问题。

首先我想,TW3调用的是系统IE内核,系统装什么IE版本,TW3 就使用该版本的IE内核,既然装了IE8,那就是在使用IE8的模式来渲染页面。

我做了个实验,首先用IE8打开一个网站,比如我们单位的官网www.cip.com.cn(该网站首页是在IE6下开发的,所以IE8下能明显地看出区别),然后在TW3中同样打开该网站,发现没有勾选“用IE8模式显示页面”时,在IE8的正常模式和兼容性视图之间任意切换,TW3都使用兼容性视图模式来渲染页面。而勾选“用IE8模式显示页面”后,TW3的渲染模式将随着IE8的视图模式切换而改变,也就是这种情况下IE8调成兼容模式,TW3也变成兼容模式,IE8正常模式,TW3也采用正常模式。

这样一来“用IE8模式显示页面”就和其设计初衷有点矛盾了。矛盾在于如果某个网页在IE8下调成了兼容视图模式,那么TW3中有没有勾选“用IE8模式显示页面”效果都是一样的——都只用兼容性视图模式来渲染网页。

稍等,刚才怕半途而废,没写完就上传了,现在继续

我觉得从功能上来说,TW3既然调用IE内核,就让他默认使用IE的渲染模式(不管是正常渲染还是兼容性渲染),而可选“IE8兼容性试图模式”,以便在安装IE8的情况下强制使用兼容模式显示页面。

这样一来,工具菜单中的“用IE8模式显示页面”应该改成“用IE8兼容性视图模式显示页面”。逻辑关系变为:系统没有安装IE8,该功能不可见,安装了IE8的,该功能可见,但默认未勾选。未勾选时,渲染模式随着IE8 而变,勾选上了,则强制使用兼容视图模式。


昨天睡觉前又好好想了想这个问题,如果工具菜单中该功能设计成以下菜单形式,可能更好:

工具》渲染模式,有三个子菜单项:IE8模式、强制IE8原生模式、强制IE8兼容模式(名称可斟酌)

该渲染模式子菜单在未安装IE8时不可见,安装IE8后,默认勾选“IE8模式”(即默认调用IE8渲染模式,不管是正常还是兼容,随IE8而变),或默认勾选“强制IE8兼容模式”(考虑到目前为IE6设计的网页情况较多)。三者只能选其一。如果用户手动勾选了“强制IE8原生模式”,则不管IE8中怎么调,TW3始终以原生模式显示网页。

13# moonlite

你分析得很不错,希望开发组能采纳下这个意见!

我刚在这个ie8模式下,又丢了cookies,ie8不会自己智能使用兼容模式吧?我都统一user agent了,还是会丢cookies,一点体会:比如用tw登录某个论他,再用ie去打开这个论坛,登录信息会同步,关了再开,很容易就丢失了

TOP

按你这么说,楼主讲的就是对的,应该是ie没提供相关api接口吧
sszou 发表于 2010-4-12 10:20 http://bbs.ioage.com/cn/images/common/back.gif


不知道开发人员是不是因为没有“强制IE8原生模式显示”这个接口才这么设计的,如果没办法实现强制原生模式,那么想要实现http://www.ioage.com/tw/help/advanced_ie8mode.html所描述的功能是不可能的了,因为这的的确确就如该功能的字面“用IE8模式显示页面”所描述的那样,只是按照IE8的模式套用过来了,IE8怎么显示,TW就怎么显示。

即便是这样,采用我在一楼最初的提法【工具菜单中的“用IE8模式显示页面”应该改成“用IE8兼容性视图模式显示页面”。逻辑关系变为:系统没有安装IE8,该功能不可见,安装了IE8的,该功能可见,但默认未勾选。未勾选时,渲染模式随着IE8 而变,勾选上了,则强制使用兼容视图模式。】也更好一些,因为用户可以很直观地知道自己当前的页面渲染模式。当然,出于目前旧网页较多的情况考虑,可以默认勾选“用IE8兼容性视图模式显示页面”,这样就达到了默认强制兼容显示页面的目的。

TOP

本帖最后由 moonlite 于 2010-4-12 11:16 编辑
楼主说得有道理,不够“兼容性视图模式”是全局还是针对单个网页?按你说的,是全局的,如果是局部的,那么tw就没错了
sszou 发表于 2010-4-12 01:17 http://bbs.ioage.com/cn/images/common/back.gif


肯定是全局的。你想,TW3在未勾选“用IE8模式显示页面”时渲染页面不就是全局的吗。这个时候不管你打开什么网页,都是强制使用兼容模式显示页面的。

开发人员设计这个功能肯定是为IE8用户准备的,因为IE6下该功能根本不可用,也实现不了该功能(因为TW3直接调用系统IE核心),所以“用IE8模式显示页面”就显得怪异了,按照官网对该功能的解释http://www.ioage.com/tw/help/advanced_ie8mode.html(这个解释也是一般大家所理解的意思),显然是勾选该项后强制使用IE8原生模式显示页面。但是目前根本无法强制,她会随着IE8而变,也就是说,该功能实际上是直接调用IE8现有渲染状态(在IE8中原生显示的页面,TW3也以原生方式显示;IE8兼容显示的页面,TW3也以兼容模式显示)

另外该功能如果做修改的话,IE8有没有提供相关接口是无所谓的,可以仍按照现有方式处理,即重启浏览器的方法。另外真正实现强制IE8原生渲染模式应该也是可以的(既然目前TW3可以默认强制以兼容模式显示页面,那么我想强制原生模式对开发者来说应该也可以)

TOP

我刚才也试了下,TW3的"IE8模式"就是把IE8对网页的显示套用过来了。也就是说IE8针对某个特定网页的显示方式,兼容模式或IE8模式,就是TW3对该网页的显示模式。当然是针对单个网页的。但如此一来所有的显示模式都 ...
玄霄 发表于 2010-4-12 02:36 http://bbs.ioage.com/cn/images/common/back.gif

按你这么说,楼主讲的就是对的,应该是ie没提供相关api接口吧

TOP

楼主说得有道理,不够“兼容性视图模式”是全局还是针对单个网页?按你说的,是全局的,如果是局部的,那么tw就没错了
sszou 发表于 2010-4-12 01:17 http://bbs.ioage.com/cn/images/common/back.gif


我刚才也试了下,TW3的"IE8模式"就是把IE8对网页的显示套用过来了。也就是说IE8针对某个特定网页的显示方式,兼容模式或IE8模式,就是TW3对该网页的显示模式。当然是针对单个网页的。但如此一来所有的显示模式都是根据IE8对某个网页的显示模式决定的。在【用IE8模式显示画面】的前提设置下,TW3针对某一网页,没有自己选择切换IE8模式或兼容性视图的办法。

TOP

楼主说得有道理,不够“兼容性视图模式”是全局还是针对单个网页?按你说的,是全局的,如果是局部的,那么tw就没错了

TOP

IE 外壳只能加个注册表,其他的根本就控制不了。

TOP

本帖最后由 moonlite 于 2010-4-12 00:02 编辑
IE 没有提供相关接口,所以 IE 外壳只能更改注册表重启,不能做到像 IE8 一样即时切换模式。
AY 发表于 2010-4-11 23:40 http://bbs.ioage.com/cn/images/common/back.gif


可能未理解我的意思。我知道改变渲染模式要重启TW才能使新的模式生效。

我并不是想要实现即时切换。而是这里的“用IE8模式显示页面”表现出来的功能和它的名称无法一致。

IE8的兼容性视图是不是也是一种页面渲染模式?那么IE8有几种模式?是只有一种吗?非也,,就和SATA硬盘类似,有原生模式和兼容性模式。那么既然装了IE8了,“用IE8模式显示页面”不是显得听起来有些怪异?如果开发人员本意是强制使用符合标准的IE8原生模式显示页面,那么为何又会受到IE8中模式调整的影响呢(上面提到了,勾选“用IE8模式显示页面”后,TW3的渲染模式将随着IE8的视图模式切换而改变)。如果本意不是强制使用标准模式,那么要这个功能菜单又做什么用呢?

除非勾选该功能菜单后,能强制使用IE8原生渲染模式显示页面,那么这个功能才是有意义的(当然,名称还是有待斟酌,否则可能会让一些人搞糊涂)

TOP

有道理只是做不到。IE 没有提供相关接口,IE 外壳只能更改注册表重启,不能做到像 IE8 般切换。

TOP

已续上,顶上来大家看看有没有道理

TOP

嗯,然后,有什么问题啊?

TOP

返回列表