我有一个:" TypeError:Window.getComputedStyle的参数1不是一个对象。"但不能让它孤立

时间:2014-06-15 20:44:27

标签: jquery firefox

Pre:我很确定,有一个微妙的Firefox错误,但我无法将其隔离,我正在寻求帮助来实现这一目标。

所以这很奇怪:

以下问题':我扩展了我的(红宝石)页面以获取欧盟 - cookie故事,但这不是重点;我现在得到的情况是,一切都适用于(几乎)所有浏览器和(几乎)所有页面。

在FireFox上一个页面上的,我得到"TypeError: Argument 1 of Window.getComputedStyle is not an object."其他页面按预期工作(相同的模板,相同的逻辑)

只有当我一起使用$().show() css: display:none;时才会出现此错误。如果我评论display: none;样本:没有错误,如果我评论(或删除).show():没有错误

我找到了一个解决方法,(我使用visibility: hidden;但我仍然确定,这不是我的错,而且我应该告诉FF bug修复,但我只能在一个上重现错误 - 我的主页(尚未在​​线)

我没有得到任何其他错误。

css看起来像这样:(摘录)

div#site-cookie-alarm {
  visibility: hidden;
  position: absolute;
  display:none;
  top: 0px;
  left: 0px;
  width: 100%;
  ...

jquery看起来像这样:(摘录和解决方法在这里)

 h=$('div#site-cookie-alarm').height() #just a workaround
 $('div#site-cookie-alarm').show().height(0).css("visibility","visible").animate({height:h}, 1000)

任何想法,尝试什么,孤立这个问题?

编辑: sry,忘了:Windows 7/64上的FF是29.0.1

EDIT添加了调试信息

jQuery尝试确定display的默认(浏览器)值,如果它是display:none;

function css_defaultDisplay( nodeName ) {
   var doc = document,
   display = elemdisplay[ nodeName ];
   if ( !display ) {
      display = actualDisplay( nodeName, doc ); 

在那里尝试创建div

// Called ONLY from within css_defaultDisplay
function actualDisplay( name, doc ) {
   var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), 
        display = jQuery.css( elem[0], "display" );

创建自己的副本(?)

 // Define a local copy of jQuery
jQuery = function( selector, context ) {
   // The jQuery object is actually just the init constructor 'enhanced'
   return new jQuery.fn.init( selector, context, rootjQuery );
   }, 

回到actualDisplay,其中elem现在是一个空对象,所以elem[0]也是undefinedundefined elem

getStyles(elem=undefined)jquery.js?body=1
curCSS(elem=undefined, name="display", _computed=undefined)jquery.js?body=1 
css(elem=undefined, name="display", extra=undefined, styles=undefined)jquery.js?body=1 

actualDisplay(name="div", doc=Document ?locale=de)jquery.js?body=1
css_defaultDisplay(nodeName="div")jquery.js?body=1
showHide(elements=Object[div#site-cookie-alarm], show=true)jquery.js?body=1
show()jquery.js?body=1
(?)(speed=undefined, easing=undefined, callback=undefined)jquery.js?body=1
step_through(step_number=0)site_c...?body=1 
(?)()?locale=de (Zeile 4)

0 个答案:

没有答案