Ace编辑器 - 未捕获TypeError:无法读取未定义的属性'clientX'

时间:2012-05-14 20:18:07

标签: mootools ace-editor

我使用ace编辑器和mootools。 我刚刚将我的mootools更新到版本1.4.5,当我点击/拖动编辑器时我得到了js异常:

Uncaught TypeError: Cannot read property 'clientX' of undefined

请帮忙......谢谢

3 个答案:

答案 0 :(得分:2)

我觉得我找到了一个解决方法,而不是删除绑定方法。似乎只有几个Mootools版本才有这个问题。所以我使用这段代码来修复它们:

if (this.MooTools.build=='ab8ea8824dc3b24b6666867a2c4ed58ebb762cf0') {
    delete Function.prototype.bind;

    Function.implement({

        /*<!ES5-bind>*/
        bind: function(that){
            var self = this,
                args = arguments.length > 1 ? Array.slice(arguments, 1) : null,
                F = function(){};

            var bound = function(){
                var context = that, length = arguments.length;
                if (this instanceof bound){
                    F.prototype = self.prototype;
                    context = new F;
                }
                var result = (!args && !length)
                    ? self.call(context)
                    : self.apply(context, args && length ? args.concat(Array.slice(arguments)) : args || arguments);
                return context == that ? result : context;
            };
            return bound;
        },
        /*</!ES5-bind>*/
    });
}

好处是我可以分别为每个构建修复它。显然,缺点是mootools代码附带了我自己的代码。但目前我没有看到其他选项,因为我为Joomla编码,我很确定使用的mootools版本数量有限。

答案 1 :(得分:1)

我为我的情况解决了! 我删除了mootools.js中的一些行:

1)bind:function(e){var a = this,b = arguments.length&gt; 1?Array.slice(arguments,1):null,d = function(){}; var c = function() {var g = e,h = arguments.length; if(this instanceof c){d.prototype = a.prototype; g = new d;} var f =(!b&amp;&amp;!h)?a.call(g):a.apply(g,b&amp;&amp; h?b.concat(Array.slice(arguments)): b || arguments); return g == e?f:g;}; return c;}

2)删除Function.prototype.bind;

(我不需要在mootools中绑定鼠标,所以这对我来说是个启示!)

答案 2 :(得分:0)

这是一个非常奇怪的错误。在调试过程中,我没有得到错误。但是一旦我删除断点,它就会再次出现。我终于通过adding the latest version of mootools 1.4.5向joomla解决了这个问题。错误立刻消失了。