jquery iframe css firefox bug?

时间:2009-11-05 20:04:50

标签: jquery css firefox iframe

如果不详细了解这些方法的作用,有人能告诉我为什么会得到这些奇怪的结果吗?

getCurrentIframe().findInIframe("h2").css("paddingLeft") // gives me "20px"

如果我执行.get(0)或[0]以获取dom元素,然后将其重新包装在$ I中:

$( getCurrentIframe().findInIframe("h2")[0]).css("paddingLeft") //it gives me "0px"

当我执行.each时,$(this).css("paddingLeft")(在每个循环中)也会给我0px。

当我使用它(从父窗口)时,我在paddingLeft上也会得到不同的结果: iframe.contentWindow.$(selector).css("paddingLeft") //gives me 20pxiframe.contents().find(selector).css("paddingLeft") //gives me 0px

似乎firefox无法在元素上的iframe中找到正确的css,除非它的样式设置为inline。 (例如:如果body在css中有font-size:18,但是css的元素有font-size:40px,它将返回18px)

猛然一惊

加入:

  getCurrentIframe().findInIframe("h2").each(function() { console.log($(this).css("paddingLeft")) }).css("paddingLeft") 

这打印在firefox 0px 20px中。如何在chrome中打印20px 20px

2 个答案:

答案 0 :(得分:0)

我没有给你回答,但是我遇到了一个与Galleryview插件(http://spaceforaname.com/galleryview)非常相似的问题,当以下内容返回'undefined'时失败:

j_panels.css('paddingLeft')

一旦IE做了正确的事,FF就失败了! :-(无论如何,你的帖子在这里为我节省了一些额头敲打:直接向有问题的div添加'padding:0px'消除了问题。

而且,是的,这是一个iframe - 事实上是一个灯箱。有趣的是,我从未注意到Colorbox的任何内容,但我们今天转到Fancybox并开始看到Galleryview的问题。

答案 1 :(得分:0)

两件事。首先,内联CSS样式可能工作得更好,因为在脚本运行时外部CSS的时序问题不可用。

其次,iframe.contentWindow。$(selector)很奇怪我不希望它得到相同的结果。我敢打赌。$()调用就像调用$()一样 - 我的意思是它会从页面上的所有内容中选择,而不仅限于内容窗口。