我继承了实现MooTools 1.4.5的代码库。

该代码还利用第三方库来处理响应设备上的拖动。该库中包含以下代码:

var dndEvent = new Event(type, {
    bubbles: true,
    cancelable: cancelable
});


该事件在匿名MooTools函数中产生以下异常:

Uncaught TypeError: Cannot read property 'indexOf' of undefined

MooTools代码已最小化(且未映射),因此,我尚未针对未最小化的代码对其进行测试,以了解该匿名函数的作用,但我怀疑它与MooTools Element.Event有关。

如果是这种情况,我将如何强制范围使用JavaScript的Event接口而不是MooTools?

最佳答案

一个快速的技巧(我认为您正在尝试避免在此阶段进行深度重构)是在Mootools覆盖之前保存该Event对象:

<script>window.savedEvent = window.Event</script>
<script src="mootools.js"></script>


然后将您的第3方库修改为使用“ savedEvent”(现在显示“ Event”),或将其全部放在范围内。

+(function() {
  var Event = window.savedEvent
  //existing code goes here
})()


但这可能需要您通过将那些标识符放在window对象上来显式导出库提供的所有内容

关于javascript - 使用JavaScript事件而不是MooTools Element.Event,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57923712/

10-12 13:35