menu

北方天空下

i am not a man of too many faces,the mask i wear is one...

Avatar

[Bug?]Chrome和取词软件的兼容性问题

Chrome1.0发布的时候我用过一段时间,感觉还是挺新鲜的。后来又回到了Firefox,因为我离不开美味书签的插件。昨天安装了Google浏览器2.0的最新beta版本,测试表明,在启动性能和JavaScript性能上都有显著提升。并且有了新加入的tab拖拽功能。

比起FF不断跳票,Google的开发进度还是井然有序的,我打算使用一段时间看看,现在感觉使用GReader等服务的体验都很不错。目前美味书签插件我使用Bookmarklet临时代用了,除了搜索慢点,其他还行。另一个问题就是有道桌面词典了,目前取词不支持google浏览器。以前写过一篇文章来分析Chrome的沙盒技术

其中一个问题当时没有注意到,今天补充一下:取词问题我想可能是因为chrome和有道在不同桌面工作所导致的:在windows中,我们启动的程序都会默认分派一个窗口站的内核对象WindowStations,并且每一个窗口站会有一个默认桌面Desktop,桌面上则可以包含对话框、菜单等对象。

对于普通的win32应用程序,他们会从属于窗口站Windows\WindowStations\WinSta0的默认桌面\Default
对于服务应用程序,他们会从属于窗口站Windows\WindowStations\Service-0x0-3e7$的默认桌面\Default

在windows中只有一个窗口站是可见的,这个窗口站是WinSta0,而服务的窗口站Service-0x0-3e7$是不可见的。同一个窗口站中可以存在多个桌面,例如对于windows用户来说,登陆桌面\Winlogon和登录后的默认桌面\Default是两个不同的桌面对象,两个属于不同桌面的程序之间消息通信会存在问题,这种多桌面的区分是一种windows安全性的机制。

使用ProcessExplorer可以看到Chrome的每一个tab页进程都关联到了Chrome自己的桌面对象\ChromeRendererDesktop:

而有道则只在默认桌面\Default,所以这会导致有道词典无法取到Google浏览器页面上的词。

举个例子:金山有个密保产品,其中一特性是创建一个“安全桌面”,让相应的网银阿游戏啊什么的可以在安全桌面运行,此时取词软件也是无法取到安全桌面里网页的词的,但是可以设置让有道也在安全桌面运行。实验之后发现,同在一个桌面后,取词就成功了。所以我推测和chrome的兼容性问题是由于这个特性引起的,而这个需要有道来修改,它应该考虑多桌面的情况。[另外,也有人说是否支持取词也还是渲染引擎的问题,这个我就不清楚了,谁知道欢迎交流]

没办法,现在只好把翻译也用Bookmarklet来代替了。
网上看到有人说有道和谷歌金山词霸支持chrome,不过我自己测试来看,都不支持,如果谁支持了告诉我,看是不是我啥选项没有开。。

-------update-------------
Chrome的主进程会同时关联\Default和各个页面tab创建的\ChromeRendererDesktop
Chrome插件进程会仅关联\Default
如我开展2个tab页,就会有1个主进程、1个插件进程、2个页面进程,下面是主进程的句柄显示:

Chrome没有插件机制
所以还在坚守firefox
用了各种插件,像adblock之类,会对ff上瘾。。

我最近访问google的产品,都只用chrome了,哦,我用的是chromium。

Chrome 4.0版之后就支持扩展了,现在有了OnlineDict后,取词翻译功能比金山词霸还强大。

评论已关闭