标签: mozilla

  • SpiderMonkey

    最近刚好要用到嵌入脚本,所以用了一下 MozillaSpiderMonkey JS 引擎。从 Mozilla 的 ftp 上下载了 1.7.0 的源代码,包里面有编译脚本,但是在 VS 05 的环境中会出错,于是在网上找了一个新的编译脚本:js.vs2005。编译后,得到 js32.dll, js32.lib, js32.dll.manifest 三个有用文件。

    在 vs 05 的项目中,如果需要用到 js32 库,除了在链接器中加入 js32.lib,还要在清单中加入 js32.dll.manifest,否则编译一点问题都没有,运行的时候就出错。

    Tips: 为了避免清单文件的麻烦,用 VC6 编译环境执行 js.vs2005 脚本得到的 js32.dll 跟容易使用。

    另外一点就是 Mozilla Docs 上的文档应该是对应 1.8 版的,和 1.7 有一些不同,没法直接用的,IBM 的这一篇比较有参考价值。

  • 非官方的 Firefox 4 修补

    Firefox 4 RC1 发布临近,不过仍然有一个在外观上的小 bug 没有修正(至少在目前最新的编译中没有)。

    这个 bug 发生在 Windows 版 Firefox 4 RC1 及之前的版本,Tabs on top 打开且关闭菜单栏时,网页中的链接如果是在新窗口打开的(也就是 target=”_blank”),那么新打开窗口的“标题栏”高度会有问题,如下图:

    attachment

    图中可见,标题栏的高度小于标签的高度。如果是手动打开一个新窗口,或者按右键选择“在新窗口打开链接”,那个新窗口则不会有问题。

    这个 bug 详见:Bugzilla@Mozilla – Bug 636951 以及 Bugzilla@Mozilla – Bug 625367

    从 bug 625367 可见,已经有了一个 patch 修复这个问题,不过由于是一个 soft block,所以 rc1 没有加入这个 patch,不过我们可以根据 patch 手工修复 Firefox 4。

    在 Firefox 4 安装目录中有一个 omni.jar 文件,它是 Firefox 最主要的部分。用压缩软件将它解压开,导航到这个目录:chromebrowsercontentbrowser,其中有一个 browser.js 文件,用编辑器打开,定位到 10186 行 -_-!,函数 allowBy,第10191行(第一个 if 条件为 true 的代码块)的 this._update(); 修改为 setTimeout(function (self){self._update();}, 0 ,this);,保存文件,重新压缩为 omni.jar,这个 bug 就修复了。

    希望这个 bug 的修复能包含在 Firefox 4 的正式发布中。

    这里提供两个已经修复的版本:

    For Firefox 4b12 Windows 32bit: omni.b12fixed

    For Firefox 4rc Windows 32bit: omni.rc1fixed