在不详细说明这些方法的作用的情况下,谁能告诉我为什么我会得到这些奇怪的结果?
getCurrentIframe().findInIframe("h2").css("paddingLeft") // gives me "20px"
如果我使用 .get(0) 或 [0] 来获取 dom 元素,然后将其重新包装在 $ 中,我会得到什么:
$( getCurrentIframe().findInIframe("h2")[0]).css("paddingLeft") //it gives me "0px"
当我执行 .each
时,$(this).css("paddingLeft")
(在每个循环内)也给我 0px。
当我使用这个(从父窗口)时,我在 paddingLeft 上也得到了不同的结果:
iframe.contentWindow.$(selector).css("paddingLeft")//给我 20px
但
iframe.contents().find(selector).css("paddingLeft")//给我0px
似乎 firefox 无法在元素的 iframe 中找到正确的 css,除非它具有内联样式设置。 (例如:如果 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
最佳答案
我没有答案,但我刚刚遇到了一个与 Galleryview 插件 ( http://spaceforaname.com/galleryview ) 非常相似的问题,当以下返回“未定义”时该问题失败了:
j_panels.css('paddingLeft')
这一次 IE 做了正确的事情,而 FF 失败了! :-( 不管怎样,你在这里的帖子让我省了一些脑筋急转弯:将“padding: 0px”直接添加到有问题的 div 解决了这个问题。
而且,是的,这是在一个 iframe 中——实际上是一个灯箱。有趣的是,我从未注意到 Colorbox 有任何问题,但我们今天切换到 Fancybox 并开始发现 Galleryview 存在问题。
关于jquery iframe css firefox 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683191/