IE9中不会触发MooTools事件(仅在刷新后)

时间:2014-03-26 13:18:03

标签: mootools mootools-events

我改变了整个问题,因为我在第一次运行时没有提供足够的信息:感谢@Sergio。

IE中有很多不起作用的东西。

当我执行addEvent(' domReady')时......它更糟糕(它没有被执行但是如果我刷新页面......它有效)

有没有一种正确的方法来处理MooTools中的IE内容?

注意: 在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 个答案:

答案 0 :(得分:1)

在某些版本的Internet Explorer(即IE6)中,如果在脚本标记之后放置内容类型元标记声明,则脚本标记可能会执行两次。

应始终在任何脚本标记之前声明content-type。

请参阅此处http://mootools.net/docs/core/Utilities/DOMReady

答案 1 :(得分:0)

我想没有解决方案所以我必须为此找到解决方法。 我做了什么:

由于我的问题是通过刷新页面解决的,所以我在meta标签中做了这个。

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

在修复IE刷新漏洞时,它可能对其他人有所帮助。