我使用ace编辑器和mootools。 我刚刚将我的mootools更新到版本1.4.5,当我点击/拖动编辑器时我得到了js异常:
Uncaught TypeError: Cannot read property 'clientX' of undefined
请帮忙......谢谢
答案 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解决了这个问题。错误立刻消失了。