【问题标题】:jQueryUI tabs and Firefox: getBBox broken?jQueryUI 选项卡和 Firefox:getBBox 坏了?
【发布时间】:2012-01-12 18:06:46
【问题描述】:

几乎完全在 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 - 没有深入研究选项卡代码,一种解决方法是在进行维度计算之前选择选项卡。对我来说没问题,但对大多数人来说可能会破坏练习的意义。

将主题更改为提及标签。

【问题讨论】:

  • 如果您给我们一个或多个测试用例,诊断问题会更容易。
  • 您可以发布代码链接吗?根据你提供的信息,除了你不高兴之外,真的很难说任何话。
  • 上周我花了几个小时将其简化为测试用例,但所有测试用例都有效。我只是在钓鱼,看看有没有其他人看到过类似的东西。 @Boris - 是的,你是对的,心烦意乱 :) 今天早上另一个在 IE9、Opera、WebKit 和 Firefox 9.0.1/Win7 上有效,但在 Firefox 9.0.1/XP 或 Firefox 上无效3.6/Linux。很难知道从哪里开始。
  • 我得到了心烦意乱的部分。关键是,如果您想要一个有用的答案,您需要提供某种信息,以便其他人能够诊断问题......
  • 我知道这是一个老问题,但这仍然影响着我(没有 jQuery UI 选项卡,虽然我使用的是隐藏/无显示属性)。这是针对 Firefox 提交的一个错误,它反映了我的问题,是的,它仍然存在:bugzilla.mozilla.org/show_bug.cgi?id=612118 -- Firefox 53.0.1

标签: javascript firefox svg jquery-ui-tabs


【解决方案1】:

是时候帮助您更有条理地控制正在发生的事情了!使用多个版本的 Firefox 可能会很痛苦,尽管这将帮助您解决所有问题。这可能需要您在一台功能强大的机器上花费一个小时,但是您将可以控制并通过让您的计算机保持最新并使其更有条理来更有能力完成工作。

查找基于 Gecko 的错误的第一个位置是 Bugzilla

我不使用 SVG,尽管我可以告诉你 Mozilla 一直在努力更新标准,尽管没有优雅(许多 DOM 3/4 更改都有名称为“kill isSameNode”的错误)。

抛开政治因素不谈,您确实需要使用单独的安装和配置文件。要做到这一点,您需要一些关键的东西......

保留离线安装程序

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

您可以获得一些稳定版本,但请记住,Mozilla 正在做的很多事情表明,通过转到Firefox Releases 页面,然后搜索“Firefox 旧版本”以查找较旧的安装程序,需要进行一些药物测试。

安装您计划测试的版本

  • 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% 适得其反。

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

壁虎/火狐 KHTML / Konqueror(带有 KDE 桌面的 Linux 发行版) Presto / 歌剧 三叉戟 / 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 始终向您显示配置文件管理器(如果您有多个配置文件要从中进行选择,例如,因为我有康卡斯特,他想让我在毫无价值的“美国”电视上砸钱,而不是给我可靠的流媒体我必须手动下载 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 天更新一次 Firefox 不感兴趣,那么新版本会不断出现,请转入企业版(10.0 版将是企业版,我认为它会继续支持 54 周)。我总是重新创建配置文件以防止垃圾从旧版本传递到新版本,尽管您可以使用同步来获取密码并且可以导出/导入书签。

备份和恢复

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

希望这将帮助您更轻松地使用新版本进行测试,而不会觉得您不得不一直处理更新,同时仍然能够测试多个版本。


重要!如果您不想每 42 天更新一次所有内容(不可能对 Firefox 进行任何有意义的更改),我强烈建议使用扩展版支持版本Firefox 作为您的主要副本,支持 54 周。您仍然可以打开较新的普通版本,然后在 54 周后迁移到下一个主要版本,经过一段时间后,您实际上值得花时间迁移到较新的版本。您可以下载扩展版支持版本here

【讨论】:

  • 抱歉 - 上周离开了。我不得不说这是对我应该做什么的非常全面的描述。我已将其标记为只是为了努力的答案.. :) 不幸的是,只有我一个人,所以我需要一段时间才能正确进行测试。
  • 互联网的伟大之处在于,当您有机会回复时,我会看到通知,明天或一个月后可以为您提供帮助,所以不用担心,现实生活先于互联网。 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
相关资源
最近更新 更多