Javascript DNN 6中的菜单位置混乱
我的DNN模块有一些图像按钮,单击时显示子菜单。正如预期的那样,菜单的绝对位置是使用javascript计算的。到目前为止,这种方法在DNN4和DNN5中运行良好。但我们注意到DNN6中存在一个问题。菜单位置关闭了大量像素,可能有几百个。 因为我没有编写计算代码,我也不是JS专家,所以我无法理解DNN6是如何影响它的。 以下是函数:Javascript DNN 6中的菜单位置混乱,javascript,dotnetnuke,Javascript,Dotnetnuke,我的DNN模块有一些图像按钮,单击时显示子菜单。正如预期的那样,菜单的绝对位置是使用javascript计算的。到目前为止,这种方法在DNN4和DNN5中运行良好。但我们注意到DNN6中存在一个问题。菜单位置关闭了大量像素,可能有几百个。 因为我没有编写计算代码,我也不是JS专家,所以我无法理解DNN6是如何影响它的。 以下是函数: function AbsolutePosition(obj) { var pos = null; if(obj != null) {
function AbsolutePosition(obj) {
var pos = null;
if(obj != null) {
pos = new Object();
pos.top = obj.offsetTop;
pos.left = obj.offsetLeft;
pos.width = obj.offsetWidth;
pos.height= obj.offsetHeight;
obj = obj.offsetParent;
while(obj != null) {
pos.top += obj.offsetTop;
pos.left += obj.offsetLeft;
obj = obj.offsetParent;
}
}
return(pos);
}
我想了解这段代码是如何受到父页面结构的影响的——因为更改外观没有任何区别。这与页面元素的组织方式有关
编辑:我也在寻找关于我可以尝试修改代码的建议
欢迎任何意见!谢谢。这与绝对定位的工作原理有关。当元素处于绝对位置时,上面代码中顶部和左侧元素指示的位置相对于其最近的祖先,位置样式为相对或绝对。在DNN 6中,模块包装器现在在其上指定了position:relative,新操作菜单用于定位。如果菜单不在模块中,新控制面板也可能会有一些类似的更改 您可以尝试此脚本,如果元素的位置为绝对或相对,则该脚本将停止爬树:
这与绝对定位的工作原理有关。当元素处于绝对位置时,上面代码中顶部和左侧元素指示的位置相对于其最近的祖先,位置样式为相对或绝对。在DNN 6中,模块包装器现在在其上指定了position:relative,新操作菜单用于定位。如果菜单不在模块中,新控制面板也可能会有一些类似的更改 您可以尝试此脚本,如果元素的位置为绝对或相对,则该脚本将停止爬树:
谢谢虽然我不完全理解position:relative的含义,但您能建议我对代码进行任何修改吗?谢谢!!虽然我不完全理解position:relative的含义,但您能建议我对代码进行任何修改吗?
function AbsolutePosition(obj) {
if (!obj) {
return null;
}
var pos = {
top: obj.offsetTop,
left: obj.offsetLeft,
width: obj.offsetWidth,
height: obj.offsetHeight
},
positionsToStopAt = {
relative: true,
absolute: true
};
obj = obj.offsetParent;
while(obj && !positionsToStopAt[jQuery(obj).css('position')]) {
pos.top += obj.offsetTop;
pos.left += obj.offsetLeft;
obj = obj.offsetParent;
}
return pos;
}