Событие MooTools не запускается в IE9 (только после обновления)

Я изменил весь вопрос, потому что я не предоставил достаточно информации при первом запуске: спасибо @Sergio.

Есть много вещей, не работающих в IE.

Когда я делаю addEvent('domReady').... Это еще более плохо (это не выполняется, но если я обновляю страницу... это работает).

Есть ли правильный способ справиться с этими вещами IE в MooTools?

примечание: работает в любом браузере на всей планете, кроме IE*

редактирование: добавлен полный исходный код корзины ajax. Этот код правильно, это только для понимания цели:ajax_cart.js

var AjaxCart = new Class({
    Implements: Options,
    cartDiv: null,
    options: {
        elem_id: 'shopping-cart-icon',
        event: 'mouseenter',
        url: 'changed_url_but_it's_correct='+(new Date().getTime())
    },
var AjaxCart = new Class({
    Implements: Options,
    cartDiv: null,
    options: {
        elem_id: 'shopping-cart-icon',
        event: 'mouseenter',
        url: '/changed_url_but_it's_correct='+(new Date().getTime())
    },
var AjaxCart = new Class({ 
    Implements: Options,
    cartDiv: null,
    options: {
        elem_id: 'shopping-cart-icon',
        event: 'mouseenter',
        url: '/changed_url_but_it's_correct'+(new Date().getTime())
    },
    initialize: function() {
        var cart = this;
        this.elem = $(this.options.elem_id);
        if (this.elem) {
            this.elem.addEvent(this.options.event, function() {
                cart.viewCart();
            });
        }
    },
    getCart: function() {
        var cart = this;
        var myHTMLRequest = new Request.HTML({
            url: cart.options.url,
            onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
                //console.log(responseHTML);
                if (!cart.cartDiv) {
                    cart.cartDiv = new Element('div', {'class':'ajax-cart'});
                    cart.cartDiv.fade('hide');
                    cart.cartDiv.inject(cart.elem);
                    cart.cartDiv.addEvent('mouseleave',function() {
                        this.fade('out');
                    });
                }
                cart.cartDiv.innerHTML= responseHTML;
                cart.cartDiv.fade('in');
            },
            onFailure: function(xhr) {
                console.log(xhr.responseText);
            }
        }).get();
    },
    viewCart: function() {
        if (this.cartDiv) {
            this.cartDiv.fade('in');
        } else {
            this.getCart();
        }
    }
});

Этот код работает в любом браузере, кроме IE, только после обновления страницы он работает.в index.html

   if(Browser.ie) {

                var ajaxCart;
                window.addEvent('load', function() {
                  ajaxCart = new AjaxCart({'elem_id':'shopping-cart-icon'});
                });
            } else  {
            var ajaxCart;
                window.addEvent('load', function() {
                ajaxCart = new AjaxCart({'elem_id':'shopping-cart-icon'});
            });
            }

2 ответа

Решение

Я думаю, что нет никакого решения, поэтому мне пришлось искать обходной путь для этого. Что я сделал:

Поскольку мои проблемы были решены путем обновления страницы, я сделал это в метатеге.

<meta http-equiv="Expires" content="-1" />

Это может помочь кому-то еще, когда дело доходит до исправления ошибок обновления IE.

В некоторых версиях Internet Explorer (т. Е. IE6) тег сценария может выполняться дважды, если после тега сценария размещено объявление метатега типа содержимого.

Тип содержимого всегда должен быть объявлен перед любыми тегами скрипта.

Смотрите здесь http://mootools.net/docs/core/Utilities/DOMReady

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