我在我的项目中使用dojo 1.5库。在IE9上工作时,dojo.stopEvent和preventDefault中断以防止浏览器右键单击action.However但我得到在http://bugs.dojotoolkit.org/changeset/23802/dojo上的补丁。
但是我不想在库本身中进行更改。我正在寻找编写自己的代码来通过覆盖event.js的方法来修补此问题。
但我无法重写匿名函数。
我该如何解决这个问题?
在此先感谢。dojo:重写events.js中的匿名函数来处理IE9中的事件
0
A
回答
1
你指的是哪个匿名函数?
在过去,我通过保留各种问题的补丁文件以及创建适当的在构建/发布/部署过程中修补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");
}
});
编辑:我现在更了解你了。我认为你可以做到这一点的唯一方法是做这样的事情:
// 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");
}
});
也很烂,但我想不出做的更聪明的方式。代码写入的方式,您想要调用的函数从不为IE9定义。
就我个人而言,我会使用上面讨论的补丁方法,并使用构建系统来应用它。
相关问题
- 1. C# - 匿名函数和事件处理
- 2. Jquery事件处理函数仅适用于匿名函数?
- 3. gulp-uglify events.js未处理“错误”事件
- 4. Dojo中的ArrowIndicator事件处理
- 5. 如何处理javascript函数中的匿名函数?
- 6. 正确删除匿名函数事件处理程序
- 7. 内联事件处理程序和匿名函数
- 8. for循环中的事件处理程序的匿名方法
- 9. 删除匿名事件处理
- 10. DatePicker匿名事件处理程序
- 11. 删除匿名事件处理程序
- 12. 事件监听器的匿名函数
- 13. jQuery的:调用事件处理程序的匿名函数中的一个函数
- 14. Java处理,使用匿名函数
- 15. 写事件处理函数在一行
- 16. 我可以重写Scala中匿名函数的toString方法吗?
- 17. Scala:匿名函数中的异常处理
- 18. 注册的JavaScript处理函数来处理CollapsiblePanelExtender事件
- 19. 事件处理程序中的匿名函数内可访问jQuery事件对象吗?
- 20. jQuery:匿名函数中的事件参数
- 21. 了解fminunc参数和匿名函数,函数处理函数
- 22. lapply中的匿名函数
- 23. 匿名函数中的R
- 24. MySQL中的匿名函数?
- 25. JavaScript中的匿名函数
- 26. C#BHO的Onscroll事件处理IE9
- 27. 去除Dojo事件的处理程序
- 28. events.js:141 throw er; //未处理的“错误”事件
- 29. 离子生成events.js 85未处理的错误事件
- 30. 试图使匿名函数,在MATLAB中的匿名函数内
嗨,感谢您的回复......我也提到了上面的URL。请参考下面的链接:http://bugs.dojotoolkit.org/changeset/23802/dojo。我想在此链接中进行更改。您将通过单击event.js链接找到event.js文件。我想覆盖所有这些函数以提供dojo.isie <9检查。 例如:_fixEvent – harris
更新了我的答案。请给我一点,所以我可以停止得分666 :) – mrtom
嗨,感谢您的回复...但仍然右键点击上下文菜单隐藏在默认浏览器的contextmenu下。 – harris