2006-09-11
Hack dojo codes with dojo&aposs util
关键字: javascript ajax
dojo.lang.extend(dojo.widget.PopupMenu2, {
onOpen: function(e){
this.openEvent = e;
var x = e.pageX, y = e.pageY;
var win = dojo.html.getElementWindow(e.target);
var iframe = win._frameElement || win.frameElement;
if(iframe){
var cood = dojo.html.abs(iframe, true);
x += cood.x - dojo.withGlobal(win, dojo.html.getScroll).left;
//override the onOpen to reslove the problem the context popup menu open under the selected TreeNode.
if (!(e.type == "contextmenu" && dojo.render.html.ie))
y += cood.y - dojo.withGlobal(win, dojo.html.getScroll).top;
}
this.open(x,y, null, [x, y]);
e.preventDefault();
e.stopPropagation();
}
});
这样我们就是复写了dojo.widget.PopupMenu2类的onOpen方法。如果我们想调用覆盖以前的方法。
//backup the old function
dojo.widget.TreeBasicControllerV3.prototype.oldOnKey =dojo.widget.TreeBasicControllerV3.prototype.onKey;
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {
onClick: function(e) {
if (e.target.tagName == "INPUT")
return ;
// default click handler just sets the focus
var treeWidget = this.getWidgetByNode(e.currentTarget);
if (!treeWidget || !treeWidget.isTree) { return; }
var nodeWidget = this.getWidgetByNode(e.target);
if (!nodeWidget || !nodeWidget.isTreeNode) { return; }
this._focusLabel(treeWidget, nodeWidget);
},
onKey: function (e){
if (e.target.tagName == "INPUT")
return ;
this.oldOnKey(e);
}
});
dojo.lang.extend这个方式是多么的方便。我们可以用这个方法方便的扩展或修改以有的代码。
看看dojo的dojo.lang.common 里面包括了对象间的一些操作。如dojo.lang.inherits, dojo.lang.mixin etc
onOpen: function(e){
this.openEvent = e;
var x = e.pageX, y = e.pageY;
var win = dojo.html.getElementWindow(e.target);
var iframe = win._frameElement || win.frameElement;
if(iframe){
var cood = dojo.html.abs(iframe, true);
x += cood.x - dojo.withGlobal(win, dojo.html.getScroll).left;
//override the onOpen to reslove the problem the context popup menu open under the selected TreeNode.
if (!(e.type == "contextmenu" && dojo.render.html.ie))
y += cood.y - dojo.withGlobal(win, dojo.html.getScroll).top;
}
this.open(x,y, null, [x, y]);
e.preventDefault();
e.stopPropagation();
}
});
这样我们就是复写了dojo.widget.PopupMenu2类的onOpen方法。如果我们想调用覆盖以前的方法。
//backup the old function
dojo.widget.TreeBasicControllerV3.prototype.oldOnKey =dojo.widget.TreeBasicControllerV3.prototype.onKey;
dojo.lang.extend(dojo.widget.TreeBasicControllerV3, {
onClick: function(e) {
if (e.target.tagName == "INPUT")
return ;
// default click handler just sets the focus
var treeWidget = this.getWidgetByNode(e.currentTarget);
if (!treeWidget || !treeWidget.isTree) { return; }
var nodeWidget = this.getWidgetByNode(e.target);
if (!nodeWidget || !nodeWidget.isTreeNode) { return; }
this._focusLabel(treeWidget, nodeWidget);
},
onKey: function (e){
if (e.target.tagName == "INPUT")
return ;
this.oldOnKey(e);
}
});
dojo.lang.extend这个方式是多么的方便。我们可以用这个方法方便的扩展或修改以有的代码。
看看dojo的dojo.lang.common 里面包括了对象间的一些操作。如dojo.lang.inherits, dojo.lang.mixin etc
发表评论
- 浏览: 220497 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
我的相册
VB-seamless
共 13 张
共 13 张
最近加入圈子
最新评论
-
使用Terracotta和Tomcat建 ...
renavatior 写道"运行start.bat 9081 这样我们就启动了目 ...
-- by rainsf -
使用Terracotta和Tomcat建 ...
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat ...
-- by renavatior -
广州3年多经验 5500的 ...
fucku 写道广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多, ...
-- by yongfan_420 -
广州3年多经验 5500的 ...
广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多,导致机会也没有这 ...
-- by fucku -
广州3年多经验 5500的 ...
想高工资就去厂家咯,老在集成商里面混能有多大个奔头
-- by fucku






评论排行榜