2015-04-21 53 views
0

林测试的Liferay 6.2门户网站上的IE8与Win XP和收到此错误:Liferay的下IE8,YUI错误:无效的参数

网页错误的详细信息

消息:无效的参数。 线:18772 字符:13 代码:0 URI:http://a3f36f75.ngrok.io/html/js/everything.jsp?browserId=ie&themeId=eacat_WAR_eacattheme&colorSchemeId=01&minifierType=js&minifierBundleId=javascript.everything.files&languageId=en_US&b=6210&t=1420466752000

显然是与此相关的功能的YUI模块上的错误:

/** 
* Sets a style property for a given element. 
* @method setStyle 
* @param {HTMLElement} An HTMLElement to apply the style to. 
* @param {String} att The style property to set. 
* @param {String|Number} val The value. 
*/ 
setStyle: function(node, att, val, style) { 
    style = style || node.style; 
    var CUSTOM_STYLES = Y_DOM.CUSTOM_STYLES; 

    if (style) { 
     if (val === null || val === '') { // normalize unsetting 
      val = ''; 
     } else if (!isNaN(new Number(val)) && re_unit.test(att)) { // number values may need a unit 
      val += Y_DOM.DEFAULT_UNIT; 
     } 

     if (att in CUSTOM_STYLES) { 
      if (CUSTOM_STYLES[att].set) { 
       CUSTOM_STYLES[att].set(node, val, style); 
       return; // NOTE: return 
      } else if (typeof CUSTOM_STYLES[att] === 'string') { 
       att = CUSTOM_STYLES[att]; 
      } 
     } else if (att === '') { // unset inline styles 
      att = 'cssText'; 
      val = ''; 
     } 
     style[att] = val; 
    } 
}, 

任何人有任何想法,这里发生了什么?即时通讯使用一个DataTable和合金用户界面来实现表,还即时注意到,该表的DOM操作不工作只是IE8,这是代码:

var nodeObject = Y.one('#myDataTable table'); 
nodeObject.removeClass('table-table'); 
nodeObject.addClass('table'); 
nodeObject.addClass('mytable'); 
nodeObject.addClass('table-hover'); 
+0

无关,与你的发行,但:'如果(VAL ===空|| VAL === ''){val ='';}'。为什么“||”?如果* val *是'''',为什么分配''''?让我击败。哦,如果你也打电话,这可能会有所帮助。 – RobG

+0

嘿@RobG这是yui模块,我不能改变这一点,说实话,我不认为这是问题。我使用liferay,所以试图找到触发该模块的调用非常困难。 – Lowtrux

+0

是的,我知道这不是问题,只是奇怪的代码。另外'!isNaN(new Number(val))'看起来是一个非常昂贵的方法来执行'!isNaN(+ val)'(顺便说一句,对于一个空数组和“”(空字符串)都返回* true)很难确切地确定代码试图做什么。 – RobG

回答

0

下选择是无效的:

:nth-last-of-ype(n+2) 

它应该是:

:nth-last-of-type(n+2) 

setStyle方法以一个DOM节点的第一个参数:

  • @param {HTMLElement}将样式应用于的HTMLElement。
  • @param {String} att要设置的样式属性。
  • @param {String | Number} val值。

所以,这句法:

ocultar.setStyle('display','none'); 

具有无效的说法,因为display是不是一个DOM节点。

参考

+0

是的,将代码复制到以前的评论时是一个错字,这不是问题。另外我想你是不正确的setStyle参数。来自YUI库: 'setStyle(attr val)可链接 由节点式模块提供。 在node/js/node-style.js中定义:78 在每个节点上设置style属性。将camelCase(例如'backgroundColor')用于多字属性。 参数: attr字符串 要设置的样式属性。 val String |值 值.' 一切工作正常在Firefox,Chrome,IE9,IE10,IE11但不是IE8。 – Lowtrux

+0

@Lowtrux类型[不支持在IE8](http://quirksmode.org/css/selectors/#t57)以及... –

+0

是的,我知道,但ie8甚至没有显示整个小部件。当我浏览IE8上的元素时,由YUI创建的HTML结构(以及在其他浏览器中显示并正常工作)甚至不存在。 – Lowtrux