锁定老帖子 主题:西方人通常发现不了的一个IE的bug
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-10
hax 写道 IE中的所有元素其实并不是被凭空绘制出来的,而是统统基于已有的Windows控件之上。除了典型的按钮、下拉菜单等,普通的div其实也是一个textbox控件。 开眼了. 麻烦你告诉我怎么样证明这个. 我记得以前也用spy++之类的东西软件检查过IE的窗口,没有发现是基于已有的Windows控件之上这个说法呀. 刚才我又用SpyLite查看了一下还是只能发现一个Internet Explorer_Server,其他的都查不到句柄呀 |
|
返回顶楼 | |
发表时间:2008-05-10
fins 写道 down click up 这是事件处理的顺序
在down里做一些事情确实危险 例如 alert一个东西 那么click事件 就不能被正确的触发了 补充: 这个说法在上面的例子里是成立的, 不过并不通用,因为有气泡的event模型问题, click事件会被首先传递出去. 我的意思是说,如果用up事件的话,一定要注意是否仍然要处理click事件, 以及上下文的关系.并不是说这个方法有问题. |
|
返回顶楼 | |
发表时间:2008-05-10
achun 写道 hax 写道 IE中的所有元素其实并不是被凭空绘制出来的,而是统统基于已有的Windows控件之上。除了典型的按钮、下拉菜单等,普通的div其实也是一个textbox控件。 开眼了. 麻烦你告诉我怎么样证明这个. 我记得以前也用spy++之类的东西软件检查过IE的窗口,没有发现是基于已有的Windows控件之上这个说法呀. 刚才我又用SpyLite查看了一下还是只能发现一个Internet Explorer_Server,其他的都查不到句柄呀 这个还需要验证吗?电脑用多了吧: 为什么修改WINDOWS主题的时候,所有风格包括IE风格都变了,你以为做主题包这么强啊?不就是修改了底层视窗元素单元设置。 |
|
返回顶楼 | |
发表时间:2008-05-10
raojl 写道 这个还需要验证吗?电脑用多了吧: 为什么修改WINDOWS主题的时候,所有风格包括IE风格都变了,你以为做主题包这么强啊?不就是修改了底层视窗元素单元设置。 你这解释正好推翻了你的结论呀! 修改WINDOWS主题并不能影响到IE里面页面的显示呀! |
|
返回顶楼 | |
发表时间:2008-05-10
achun 写道 开眼了. 麻烦你告诉我怎么样证明这个. 我记得以前也用spy++之类的东西软件检查过IE的窗口,没有发现是基于已有的Windows控件之上这个说法呀. 刚才我又用SpyLite查看了一下还是只能发现一个Internet Explorer_Server,其他的都查不到句柄呀 很遗憾,偶老年痴呆忘记那个工具的名字了,可能是delphi的某些调试工具。。。 不过我称之为Windows控件或有不确之处,它并不一定就是Win32的标准控件,而可能是mshtml定义的控件,但是一定是遵循那套机制(MFC?)。 与Gecko是从头重写的不同,IE到现在还遗留了IE4时代(更早的不可考了……)的基本架构,有一些bug或曰feature是这种架构固有的。不过据说IE8会完全重写layout引擎。 |
|
返回顶楼 | |
发表时间:2008-05-10
hax 写道 achun 写道 开眼了. 麻烦你告诉我怎么样证明这个. 我记得以前也用spy++之类的东西软件检查过IE的窗口,没有发现是基于已有的Windows控件之上这个说法呀. 刚才我又用SpyLite查看了一下还是只能发现一个Internet Explorer_Server,其他的都查不到句柄呀 很遗憾,偶老年痴呆忘记那个工具的名字了,可能是delphi的某些调试工具。。。 不过我称之为Windows控件或有不确之处,它并不一定就是Win32的标准控件,而可能是mshtml定义的控件,但是一定是遵循那套机制(MFC?)。 与Gecko是从头重写的不同,IE到现在还遗留了IE4时代(更早的不可考了……)的基本架构,有一些bug或曰feature是这种架构固有的。不过据说IE8会完全重写layout引擎。 知道你说的是什么工具了. 早期的delphi中包含的一个工具.名字我也忘了.(好像画了个人头像的,好像是什么医生的,不确定的说) 可以监视进程,窗体,事件等信息的MON工具. 现在的delphi已经没有这个工具了. 考虑IE的内核和windows系统内核的紧密程度. 这套体制应该是个基础了,也就是你说的不是独立的. 因此可以通过考量windows系统的机制来分析问题. 恩.有道理. |
|
返回顶楼 | |
发表时间:2008-05-10
achun 写道 hax 写道 achun 写道 开眼了. 麻烦你告诉我怎么样证明这个. 我记得以前也用spy++之类的东西软件检查过IE的窗口,没有发现是基于已有的Windows控件之上这个说法呀. 刚才我又用SpyLite查看了一下还是只能发现一个Internet Explorer_Server,其他的都查不到句柄呀 很遗憾,偶老年痴呆忘记那个工具的名字了,可能是delphi的某些调试工具。。。 不过我称之为Windows控件或有不确之处,它并不一定就是Win32的标准控件,而可能是mshtml定义的控件,但是一定是遵循那套机制(MFC?)。 与Gecko是从头重写的不同,IE到现在还遗留了IE4时代(更早的不可考了……)的基本架构,有一些bug或曰feature是这种架构固有的。不过据说IE8会完全重写layout引擎。 知道你说的是什么工具了. 早期的delphi中包含的一个工具.名字我也忘了.(好像画了个人头像的,好像是什么医生的,不确定的说) 可以监视进程,窗体,事件等信息的MON工具. 现在的delphi已经没有这个工具了. 考虑IE的内核和windows系统内核的紧密程度. 这套体制应该是个基础了,也就是你说的不是独立的. 因此可以通过考量windows系统的机制来分析问题. 恩.有道理. Win32还有标准控件? 都有什么呀? 难道大家不知道MFC是给VC用的么? 貌似Window Vista以下所有版本 都以win32 API为基础的吧 会随着主题变有什么奇怪 难道有人认为IE是用label套起来布局的? |
|
返回顶楼 | |
发表时间:2008-05-10
csf177 写道 Win32还有标准控件? 都有什么呀?
难道大家不知道MFC是给VC用的么? 貌似Window Vista以下所有版本 都以win32 API为基础的吧 会随着主题变有什么奇怪 难道有人认为IE是用label套起来布局的? 基本上能写到res资源文件里的都是Win32的标准控件, res在用c/c++的时候常用,如果你不是c/c++程序员的话,不知道很正常. LZ说的当然不是什么label套起来,而是说的label的实现有一个更底层的内核在支持, 这个更底层的内核支持着windows的所有GUI上的东东. |
|
返回顶楼 | |
发表时间:2008-05-10
achun 写道 csf177 写道 Win32还有标准控件? 都有什么呀?
难道大家不知道MFC是给VC用的么? 貌似Window Vista以下所有版本 都以win32 API为基础的吧 会随着主题变有什么奇怪 难道有人认为IE是用label套起来布局的? 基本上能写到res资源文件里的都是Win32的标准控件, res在用c/c++的时候常用,如果你不是c/c++程序员的话,不知道很正常. LZ说的当然不是什么label套起来,而是说的label的实现有一个更底层的内核在支持, 这个更底层的内核支持着windows的所有GUI上的东东. 因为我本人不是Window编程人员,没有用过c++和delphi进行windows编程,所以这方面的表述可能不准确。但是我的意思大家可以理解,就是Windows本身的GUI编程所使用的体系,比如它有他自己的控件和焦点机制。这跟HTML的元素上的焦点是不同的。而IE现有的layout引擎显然在将HTML焦点转换为Windows焦点的时候出现了许多隐藏的bug。 BTW,还没有人发现我说的那个“西方人通常发现不了”的bug么?它的症状可以非常一目了然的哦。 |
|
返回顶楼 | |
发表时间:2008-05-10
hax 写道 fins 写道 不知道为什么 西方人发现不了
开动脑筋啊。一样使用IE,我们跟西方人有什么区别呢? 还没有明显发现,不过发现如果点鼠标的中建(波轮),selected生效. 还有就是如果出滚动条的话,focus生效(FF也是这样).这个不算BUG吧!也就是特性吧. |
|
返回顶楼 | |