jQueryUI标签和Firefox:getBBox坏了吗?

时间:2012-01-12 18:06:46

标签: javascript firefox svg jquery-ui-tabs

刚开发的前端几乎全部采用FF 3.6。它在IE9(即使有很多SVG),Opera和Webkit中也能很好地工作,但在FF9中完全被破坏了。我花了一整天的时间来调试它,看起来getBBox在某个地方已经破了。可能存在两个单独的问题,两者都与在包含多个文本元素的组上获取边界框,旋转文本或文本分布在多行有关。

其他人见过这个?我必须说我真的,真的,生气了。 Bugzilla没什么。如果他们没有这样一个愚蠢的发布周期,我会想回去尝试一个旧版本,但只是倾倒它似乎要容易得多......

修改

这是答案,对于任何以这种方式来的人。它基本上与jQuery UI选项卡,display:none和维度计算有关,但问题是jqueryui.com(here)的解决方法不完整。

1 - getBBox问题通常是由于display:none某处,但我的代码中没有明确的display:none

2 - 与其他浏览器相比,FireFox更容易出现显示/ getBBox问题。奇怪的是,Win7上的FF 9.0.1优于XP上的9.0.1

3 - 在隐藏标签(或隐藏的任何内容)中进行维度计算的标准方法是在屏幕外显示(请参阅上面的链接),而不是应用display:none

4 - 如果没有上面的链接解决方法,FF会抛出异常,Chrome会出错,Opera不关心等等

5 - 但上面的解决方法(.ui-tabs-hide中的屏幕外显示)是不够的。如果你这样做,但在进行维度计算之后选择标签(tabs('select'),那么FF仍然可以弄错(但它不会引发异常)。 IE9,Opera和Webkit都可以。

6 - 我错了FF 3.6 - 3.6 / Linux似乎表现得与FF 9.0.1 / XP相同

7 - 如果没有深入挖掘标签代码,一个修复就是在进行维度计算之前选择标签。对我来说没问题,但是对于大多数人来说可能会失败。

将主题更改为提及标签。

1 个答案:

答案 0 :(得分:5)

时间可以帮助您更有条理地控制正在发生的事情!使用多个版本的Firefox可能会很麻烦,但这可以帮助您对其进行排序。这可能需要一个小时才能在一台功能强大的机器上运行,但是你可以通过让计算机保持最新并让它更有条理来控制并更有能力完成任务。

首先查找基于Gecko的错误是Bugzilla

我不能使用SVG,虽然我可以告诉你Mozilla一直在大力推动更新标准但没有优雅(许多DOM 3/4更改都有像#34这样的名字的bug; kill isSameNode" )。

抛开政治,你真的需要使用单独的安装和配置文件。要做到这一点,你需要一些关键的东西......

保持脱机安装程序

保持工作安装程序(这意味着互联网下载程序)的软件工作版本非常重要。

你可以获得一些稳定的版本,但要记住很多Mozilla正在做的事情表明一些药物测试是按顺序进入Firefox Releases页面然后搜索" Firefox旧版本&# 34;找到老安装人员。

安装您计划进行测试的版本

  • C:\ MEDIA \ INTERNET \ Mozilla Firefox 3.6 \

  • C:\ MEDIA \ INTERNET \ Mozilla Firefox 4.0 \

  • C:\ MEDIA \ INTERNET \ Mozilla Firefox 5.0 \

  • C:\ MEDIA \ INTERNET \ Mozilla Firefox 6.0 \

  • C:\ MEDIA \ INTERNET \ Mozilla Firefox 7.0 \

等...

禁用自动升级

自动升级对于正确测试不同版本的Gecko渲染引擎是100%适得其反。

您正在测试渲染引擎而不是浏览器版本吗?

Gecko / Firefox KHTML / Konqueror(带有KDE桌面的Linux发行版) Presto / Opera Trident / Internet Explorer WebKit / Chrome / Safari(WebKit实际上是两者之间的复杂分支)

熟悉Firefox的个人资料。

设置快捷方式

如果您正在使用Windows,主要Firefox快捷方式应该如下所示...

"C:\MEDIA\INTERNET\Mozilla Firefox 8.0\firefox.exe" -P "Mozilla Firefox 8.0"

这将自动启动安装了该版本的该名称的配置文件。迁移到较新版本时,您需要更新此设置。我强烈建议使用企业版,每54周更新一次,而不是42天。我保留了其他配置文件,但坦率地说,更新Firefox以获得对各种CSS3自动换行属性和专有Microsoft JScript方法的支持是荒谬的,这种方法在应用程序级编程开始时并不可靠。

如果这个(或下一步)中存在没有该名称的个人资料,则会显示个人资料管理器,您将有机会自行创建。

其他版本

其他版本需要略有不同的快捷方式......

版本/配置文件组合

要快速加载版本/配置文件组合,请使用以下内容...

"C:\MEDIA\INTERNET\Mozilla Firefox 7.0\firefox.exe" -no-remote -P "Mozilla Firefox 7.0"

-no-remote允许您同时运行多个版本的Firefox。您可以多次使用相同的Firefox副本,但只能在给定的实例中使用每个配置文件。

强制firefox使用概要文件管理器

强制Firefox始终向您显示个人资料管理器(例如,如果您有多个个人资料要选择,例如,因为我让康卡斯特想让我在无价值的美国电视上花钱而不是#34;电视给我可靠的流我必须手动下载YouTube视频,所以我有一个专门的配置文件,我下载视频,并从下载窗口观看,这将浪费我的主要配置文件中的空间)。这些快捷方式应该是这样的......

"C:\MEDIA\INTERNET\Mozilla Firefox 8.0\firefox.exe" -no-remote -ProfileManager

...再次-no-remote打开一个与其他实例分开的Firefox新实例。

管理您的个人资料

管理配置文件以保持其清洁和有序并不困难。再次在Windows上,您可以找到个人资料文本文件(在您修改之前,您希望复制该文件的文件)...

C:\documents and settings\YOUR_WINDOWS_USER_NAME\Application Data\Mozilla\Firefox\profiles.ini

我强烈建议按产品/版本命名您的个人资料文件夹(例如" Mozilla Firefox 7.0")。

通过保留单独的配置文件,您可以保留个人设置/扩展程序等,并确保它们仍然可以在旧版本中使用。如果Firefox 3.6(很多用户仍在使用)中出现问题并且在新版本中没有中断,您仍然可以在该版本中使用扩展程序,而如果您外出寻找扩展程序多年后,兼容版本可能无法使用。您可以将扩展文件从.xpi重命名为.zip,解压缩install.rdf文件,并破解最小/最大兼容性版本,尽管该版本已经100%的时间用于我。

Firefox 1.5和更新版本使用-no-remote,我认为Firefox 1.0有一个不同的命令参数。一般来说,我测试回Gecko 1.8+(Firefox 1.5),主要是Firefox 3.6和最新版本,用于中等测试目的。

配置文件之间的同步

如果您对企业每42天更新一次并不感兴趣,那么新版本会再次出现(版本10.0将是企业版,我认为它将保持54周的支持)。我总是重新创建配置文件以防止垃圾从旧版本传递到新版本,尽管您可以使用同步来获取密码,并且可以导出/导入书签。

备份和恢复

如果这听起来很费劲,您可以通过对硬盘进行映像来备份所有自定义设置。有一个免费的Macrium Reflect版本,你可以成像一个硬盘分区(可能是特定的文件夹,不确定)。花了不到半个小时的时间将一个驱动器镜像到另一个驱动器,少于20个驱动器使图像恢复。如果我的系统永远是蓝屏,我可以在大约半小时内将所有内容恢复到最后一张图像或镜像(而不是一小时安装,重新安装时间,设置内容等)。

希望这可以帮助您更舒适地使用较新版本进行测试,而不会感到您不得不一直处理更新,同时还能够测试多个版本。


重要!如果您对每42天更新一次不感兴趣(这对Firefox无法进行任何有意义的更改)我高度建议使用扩展版本支持版本的Firefox作为主副本,支持54周。您仍然可以打开更新的普通版本,然后在54周后迁移到下一个主要版本,其中时间过去实际上会让您值得花时间迁移到更新版本。您可以下载扩展发行版支持版here