javascript - 使用 JavaScript 事件而不是 MooTools Element.Event

标签 javascript scope mootools dom-events

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

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

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

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

未捕获类型错误:无法读取未定义的属性“indexOf”

MooTools 代码已缩小(且未映射),因此到目前为止,我还没有针对未缩小的代码进行测试以了解此匿名函数的作用,但我怀疑它与 MooTools Element.Event 有关。 .

如果是这种情况,我如何强制作用域使用 JavaScript 的事件接口(interface)而不是 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
})()

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

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

相关文章:

javascript - 使用 JavaScript 的动态表生成器

javascript - Ajax 将值从 View 传递到 Controller

javascript - 如何从外部函数更新对象?

javascript - Div 宽度在点击时展开/缩小

javascript - MooTools 中的滚动事件没有事件对象?

javascript - 单击按钮时将焦点设置在滚动上

javascript - 使用 BACK 按钮恢复到页面的先前状态

javascript - 需要让 JS 等待 CSS 动画完成后再继续

html - CSS 作用域和多个类

c++ - 使用 C++ 宏创建新作用域?