我在我的項目中使用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