IE8 上的 YUI:参数在 dom-style.js 上无效
YUI on IE8: Argument not valid on dom-style.js
我到处都问过这个问题,但仍然没有得到任何反馈,这让我很抓狂。我们正在使用(Liferay 6.2)的门户网站上使用一些 Alloy UI 小部件,并且在除 IE8 之外的所有浏览器中一切正常。出于某种原因,我收到一条关于 YUI 核心文件函数之一中关于 setStyle(用于向 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 上获得有关类似问题的解决方案和/或信息。
好的,这比我想象的要简单得多。出于某种原因,当您使用 :
初始化 Alloy UI 时,所有现代浏览器(包括 IE9)都没有任何问题
YUI({ lang: 'ca-ES' }).use(
'aui-node',
'aui-datatable',
'aui-pagination',
'datatype-date',
function(Y) {...
但是 IE8(当然)会给您带来一系列非常奇怪的控制台错误,并且如果您不使用 AUI 而不是 YUI,将使您的小部件无法正常工作,所以这是我在代码的所有部分中用 AUI 替换了 YUI,现在在 IE8 中也能正常工作。如果有人能给出正确的解释,我将不胜感激,因为我很难理解为什么 IE8 不能使用 YUI 来初始化 Alloy UI 小部件或使用 YUI.
我仍在对此进行一些研究,但似乎发生这种情况的原因是因为我在 .JS 文件上使用 YUI,仍然需要找到正确的解释。
我到处都问过这个问题,但仍然没有得到任何反馈,这让我很抓狂。我们正在使用(Liferay 6.2)的门户网站上使用一些 Alloy UI 小部件,并且在除 IE8 之外的所有浏览器中一切正常。出于某种原因,我收到一条关于 YUI 核心文件函数之一中关于 setStyle(用于向 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 上获得有关类似问题的解决方案和/或信息。
好的,这比我想象的要简单得多。出于某种原因,当您使用 :
初始化 Alloy UI 时,所有现代浏览器(包括 IE9)都没有任何问题YUI({ lang: 'ca-ES' }).use(
'aui-node',
'aui-datatable',
'aui-pagination',
'datatype-date',
function(Y) {...
但是 IE8(当然)会给您带来一系列非常奇怪的控制台错误,并且如果您不使用 AUI 而不是 YUI,将使您的小部件无法正常工作,所以这是我在代码的所有部分中用 AUI 替换了 YUI,现在在 IE8 中也能正常工作。如果有人能给出正确的解释,我将不胜感激,因为我很难理解为什么 IE8 不能使用 YUI 来初始化 Alloy UI 小部件或使用 YUI.
我仍在对此进行一些研究,但似乎发生这种情况的原因是因为我在 .JS 文件上使用 YUI,仍然需要找到正确的解释。