mootools.svn.js показывает ошибку в IE8

Скрипт для заголовка слайдера, который использует mootools, прекрасно работает в IE7 и 9, но выдает ошибку в 8. Хорошо работает и во всех других браузерах.

Line: 2148
Char: 3
Error: Invalid procedure call or argument
Code: 0
URL: (Path to mootools.svn.js)

Код является:

setStyle: function(property, value) {
    switch (property) {
        case 'opacity': 
            return this.setOpacity(parseFloat(value));
        case 'float': 
            property = (window.ie) ? 'styleFloat' : 'cssFloat';
    }
    property = property.camelCase();
    switch ($type(value)) {
        case 'number': 
            if (!['zIndex', 'zoom'].contains(property)) 
                value += 'px'; 
            break;
        case 'array': 
            value = 'rgb(' + value.join(',') + ')';
    }
    this.style[property] = value;
    return this;
},

Строка 2148 это:

this.style[property] = value;

Я искал ответ в течение нескольких дней, и я не очень хорошо разбираюсь в JavaScript, поэтому любая помощь будет признательна.

2 ответа

Вы используете http://code.google.com/p/cnetjavascript/downloads/detail?name=mootools.svn.js&can=2&q=?

это устарело, и если вы проверите источник для ссылок на window.ie это выглядит как следующий фрагмент. если вы используете это, вам действительно стоит подумать о переходе на более новую и поддерживаемую инфраструктуру javascript.

/*
Class: window
    Some properties are attached to the window object by the browser detection.

Properties:
    window.ie - will be set to true if the current browser is internet explorer (any).
    window.ie6 - will be set to true if the current browser is internet explorer 6.
    window.ie7 - will be set to true if the current browser is internet explorer 7.
    window.khtml - will be set to true if the current browser is Safari/Konqueror.
    window.gecko - will be set to true if the current browser is Mozilla/Gecko.
*/

if (window.ActiveXObject) window.ie = window[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
else if (document.childNodes && !document.all && !navigator.taintEnabled) window.khtml = true;
else if (document.getBoxObjectFor != null) window.gecko = true;

Когда у вас есть исключение после this.style[property] = value вызов может быть реальной проблемой с недопустимым значением - например, width: -5 или "свиток: " нет "" или подобное.

просто отладьте это и посмотрите, какое это свойство и значение, и поймайте его вверх по течению - часто из-за ослабления / эластичности (например, Fx.morph по высоте с пользовательским переходом к 0).

если вы не можете помешать значению быть недопустимым, сделайте попытку / поймайте вызов анимации или что-то еще, что вызывает ее.

Другие вопросы по тегам