我到处都问这个问题,但仍然没有得到任何反馈,让我发疯。我们在使用(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上获得关于类似问题的解决方案和/或信息。
答案 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,仍然需要找到适当的解释。