【问题标题】:How to find the background-position / background-image etc for multiple backgrounds using jQuery in Safari如何在 Safari 中使用 jQuery 查找多个背景的背景位置/背景图像等
【发布时间】:2011-10-08 06:52:48
【问题描述】:

也许我在这里遗漏了一些东西。

我正在尝试获取具有多个背景的元素 (div) 的当前背景信息,使用简写 background-repeatbackground-positionbackground-image 设置。

使用 jQuery,我只需执行 var bPos = $('#element').css('background-position') 即可获取当前位置集,这将在 Firefox 和 Chromium(当前分别为版本 5 和 12)中为我提供类似 '0 0, 100px 100px, left bottom' 的信息,但在 Safari 中(操作系统上的版本 5) -X) 它只返回第一个值对 ('0 0')。这些 CSS 值在外部样式表中设置。

有没有人知道为什么会这样,以及如何在 Safari 中获取完整的值对集(使用简写 background 属性也不行)?

编辑:

这是用于外部样式表的 CSS:

#page{
    background-repeat: repeat-x, repeat-x, repeat-x, repeat-x, repeat-x;
    background-image: url('../images/line.png'), url('../images/line.png'), url('../images/line.png'), url('../images/line.png'), url('../images/line.png');
    background-position: 0 798px, 0 653px, 0 125px, 0 88px, 0 78px;
}

编辑:

好的,我在 jsFiddle 上为此做了一个测试用例,并将其报告为 jQuery bug,因为它似乎是可重现的行为(尽管我接受它可能是浏览器实现问题,而不是实际上的 jQuery错误)。

不过,如果有人有任何想法......

编辑:

jQuery 票已关闭 - 我认为这是一个 Safari 错误 - 我不太确定如何从这里走得更远,但我已经向 Apple 发布了错误报告。

编辑:

正如 Sindre Sorhus 所指出的,这似乎已在 Safari 5.1 中得到纠正。

【问题讨论】:

  • 抱歉,如果这听起来很迟钝,但您究竟是如何为 div 指定多个背景图像的? (即您可以将代码添加到问题中吗?)
  • 是的。 jQuery 团队似乎认为这是 Safari 中的一个错误。显然,在 Safari 中无论有无 jQuery,都无法获得完整的属性集。不幸的是,您在这里处理的是非常新的技术,此时浏览器实现对于 CSS3 或 HTML5 的任何部分都不完整。你只需要走一条不同的路。
  • 很公平,看起来就是这样。但是,我不会说这是一项非常新的技术——是的,没有设置 CSS3 规范,但是看到其他浏览器设法处理返回完整集(更不用说肮脏的 IE 词),并且作为据我所知,很久以前 Safari 是第一个实现多个背景的 in 2005,我原以为他们现在可以接受它了...
  • 测试用例在新的 Safari 5.1 中正确报告
  • 谢谢 - 是的,我可以确认。尽管苹果在我提交的错误报告中仍然没有说什么。想知道 Leopard 对 5.0xx 的最后一次更新是否也纠正了这个问题……

标签: jquery css safari


【解决方案1】:

【讨论】:

  • 您链接到的页面上的链接不起作用,并且帖子没有提及多个背景。此外,如果无法在 Safari 中获取多个背景的详细信息,那么 jQuery 或其他插件将无法做到。
【解决方案2】:

由于它已在 5.1 中修复,我想这不再是什么大问题了,但我想知道是否可以作为一种解决方法,您最初可以通过

从 js 设置背景
$('#page').attr('style', '...');

然后从那里读... 有点愚蠢和痛苦,是的。

【讨论】:

  • 这就是我目前正在做的事情,但它让我不得不在 Javascript 中设置样式而不是在适当的 CSS 文件中设置样式。即使它在 5.1 中有效,我仍然认为它是一个问题,因为我不能确定我的用户是否会升级。
【解决方案3】:

您可以尝试使用不同的类。这样会更容易。

【讨论】:

  • 我认为您没有理解这个问题。已经有一个 CSS 类(#page),但我需要能够读回 Javascript 中的值(在发生时,我可以将背景重置为动画之前的原始状态)。如果 Safari 不允许我复习某一节课,那么它不会让我复习另一节课!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2011-07-22
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
相关资源
最近更新 更多