0

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

Uncaught TypeError: Cannot read property 'clientX' of undefined

请帮助...谢谢

4

3 回答 3

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 版本数量有限。

于 2013-03-12T19:16:10.260 回答
1

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

1) bind:function(e){var a=this,b=arguments.length>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&&!h)?a.call(g):a.apply(g,b&&h?b.concat(Array.slice(arguments)):b||arguments);return g==e?f:g;};返回 c;}

2)删除Function.prototype.bind;

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

于 2012-11-16T10:39:08.803 回答
0

这是一个非常奇怪的错误。在调试期间,我没有收到错误。但是一旦我删除断点,它就会再次出现。我终于通过将最新版本的 mootools 1.4.5 添加到 joomla 来解决这个问题。错误立即消失了。

于 2012-09-18T14:20:56.220 回答