dojo:重写events.js中的匿名函数以处理IE9中的事件

dojo:重写events.js中的匿名函数以处理IE9中的事件,events,dojo,internet-explorer-9,Events,Dojo,Internet Explorer 9,我在我的项目中使用dojo 1.5库。在处理IE9时,dojo.stopEvent和preventDefault中断可防止浏览器右键单击操作。但是,我得到了修补程序但是,我不想对库本身进行更改。我希望通过重写event.js的方法编写自己的代码来修补此问题。 但我无法覆盖匿名函数。如何解决此问题? 提前谢谢 您指的是哪个匿名函数 在过去,我通过保留各种问题的补丁文件并创建脚本来解决类似的问题,这些脚本在构建/发布/部署过程中对Dojo进行了适当的补丁。这样,至少你有一个补丁文件列表,你知道在升级


我在我的项目中使用dojo 1.5库。在处理IE9时,dojo.stopEvent和preventDefault中断可防止浏览器右键单击操作。但是,我得到了修补程序
但是,我不想对库本身进行更改。我希望通过重写event.js的方法编写自己的代码来修补此问题。
但我无法覆盖匿名函数。
如何解决此问题?

提前谢谢

您指的是哪个匿名函数

在过去,我通过保留各种问题的补丁文件并创建脚本来解决类似的问题,这些脚本在构建/发布/部署过程中对Dojo进行了适当的补丁。这样,至少你有一个补丁文件列表,你知道在升级时要注意,如果你的构建过程可以从Dojo的干净签出开始,并根据需要修改它,那么你就不必担心你的所有开发人员都有相同的“自定义”Dojo

例如,当我对代码进行修补时,我也使用了类似的方法

// Monkey patch dojo.foo
dojo.provide('my.project.monkeyPatches.foo);

dojo.require('dojo.foo');

dojo.ready(function() {
  if (dojo.version.major === 1 && dojo.version.minor <= 5) {
    dojo.foo.someFunc = ...;
  }
  else {
    console.error("You should remove the monkeyPatch for dojo.foo now, it's no longer needed");
  }
});
那很糟糕,但我想不出更聪明的方法。按照编写代码的方式,您要调用的函数从未为IE9定义过


就我个人而言,我会使用上面提到的补丁方法,并使用构建系统来应用它。

您好,谢谢您的回复。。。我也提到了上面的URL。请参考链接:。我想更改此链接中给出的内容。单击event.js链接可以找到event.js文件。我想覆盖所有这些函数以提供dojo.isIE<9检查。你更新了我的答案。请给我一些分数,这样我就可以停止得分666:)嗨,谢谢你的回复。。。但右键单击上下文菜单仍隐藏在默认浏览器上下文菜单下。
// Monkey patch dojo.foo
dojo.provide('my.project.monkeyPatches.event);

dojo.require('dojo.event');

dojo.ready(function() {
  if (dojo.version.major === 1 && dojo.version.minor === 5) {
    if (dojo.isIE === 9 && !dojo.isQuirks) { // Invert the if
      // Copy the functions for non-IE from the event.js file
      dojo.mouseButtons = { // line 291 - 300 from http://bugs.dojotoolkit.org/browser/dojo/dojo/trunk/_base/event.js?rev=23802

      }
    }
  }
  else {
    console.error("You should remove the monkeyPatch for dojo.foo now, it's no longer needed");
  }
});