IE8上的YUI:参数在dom-style.js上无效

时间:2015-05-07 11:31:59

标签: internet-explorer-8 yui liferay-aui alloy-ui

我到处都问这个问题,但仍然没有得到任何反馈,让我发疯。我们在使用(Liferay 6.2)的门户网站上使用了一些Alloy UI小部件,并且在IE8的所有浏览器中一切正常。由于某种原因,我在其中一个关于setStyle的YUI核心文件函数中获取了关于无效参数的错误消息(用于向YUI中的节点添加样式)。我已经意识到IE8对此不满意(这是整个YUI函数):

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;

导致IE8报告错误的原因是这一行:

style[att] = val;

显然是因为

val =' '; 

我不明白为什么其他浏览器对该声明没有任何问题,只是IE8抱怨它。由于这是 dom-style.js 的一部分,它是Liferay中YUI的核心文件,我真的不想弄乱那些代码。我真的很感激任何帮助,因为我整整一周都处理这个问题,但仍然无法在www上获得关于类似问题的解决方案和/或信息。

1 个答案:

答案 0 :(得分:2)

好的,这比我想象的更简单。出于某种原因,当您使用以下方法初始化Alloy UI时,所有现代浏览器(包括IE9)都没有任何问题:

YUI({ lang: 'ca-ES' }).use(
  'aui-node',
  'aui-datatable',
  'aui-pagination',
  'datatype-date',

function(Y) {...

但IE8(当然)会给你一系列非常奇怪的控制台错误,并且如果你不使用YUI的AUI,你的小部件会工作不好,所以就是我在我的所有部分用AUI取代了YUI代码,现在在IE8中工作正常。如果有人可以提供正确的解释将非常感激,因为我很难理解为什么IE8不能正常使用YUI初始化Alloy UI小部件或使用YUI。

我仍在对此进行一些研究,但似乎发生这种情况的原因是因为我在.JS文件上使用YUI,仍然需要找到适当的解释。