各位,我最近在做一个项目中有这样一个需求
页面上是一个GridView,右键点击条目会在鼠标位置弹出一个菜单。我发现如果页面太长或者太宽出现滚动条后,右键菜单的位置不正确,好像是没有把滚动条的属性计算在里面,不知道用什么方法把当前页面的滚动条的Left,Top等属性添加进去,请各位帮忙,我用的右键脚本如下
function displayMenu(rid) {
var menu1 = document.getElementById("menu1");
whichDiv=event.srcElement;
menu1.style.leftPos+=10;
menu1.style.posLeft=event.clientX ;
menu1.style.posTop=event.clientY ;
menu1.style.display="";
var hid = $("hidRecordIdForMenu");
if (hid != null)
{
hid.value = rid;
}
//menu1.setCapture();
}
页面上是一个GridView,右键点击条目会在鼠标位置弹出一个菜单。我发现如果页面太长或者太宽出现滚动条后,右键菜单的位置不正确,好像是没有把滚动条的属性计算在里面,不知道用什么方法把当前页面的滚动条的Left,Top等属性添加进去,请各位帮忙,我用的右键脚本如下
function displayMenu(rid) {
var menu1 = document.getElementById("menu1");
whichDiv=event.srcElement;
menu1.style.leftPos+=10;
menu1.style.posLeft=event.clientX ;
menu1.style.posTop=event.clientY ;
menu1.style.display="";
var hid = $("hidRecordIdForMenu");
if (hid != null)
{
hid.value = rid;
}
//menu1.setCapture();
}
<script language="javascript">
<!--
function show()
{
if(event.button==2)
{
window.status=event.clientX+" : "+event.clientY+" "+document.body.clientWidth+" : "+document.body.clientHeight;
if(document.all)
{
div1.style.display="block";
var lf=document.body.clientWidth-event.clientX;
var tp=document.body.clientHeight-event.clientY;
if (lf < div1.offsetWidth)
div1.style.left = document.body.scrollLeft + event.clientX - div1.offsetWidth;
else
div1.style.left = document.body.scrollLeft + event.clientX;
if (tp < div1.offsetHeight)
div1.style.top = document.body.scrollTop + event.clientY - div1.offsetHeight;
else
div1.style.top = document.body.scrollTop + event.clientY;
}
}
}
document.onmousedown=show;
document.oncontextmenu=function(){return false};
//-->
</script>
这段脚本在我页面上好像也没有什么作用
我页面上是一个列数比较多的DataGrid,超过了页面的宽度,所以浏览器有滚动条,当我把滚动条拉到右面,
去查看DataGrid最后几列,在单元格中右键点击时,弹出的菜单的位置没有把滚动条的坐标考虑在内,此时如果将滚动条向左拉到开头就会发现,弹出菜单出现在鼠标点击的位置。
我在页面上试过document.body.scrollLeft 都是0,不知道为什么
var menu1 = document.getElementById("menu1");
whichDiv=event.srcElement;
menu1.style.leftPos+=10;
menu1.style.left=parseInt(event.clientX)+document.documentElement.scrollLeft+"px";//加上单位是为了浏览器兼容.
menu1.style.top=parseInt(event.clientY)+document.documentElement.scrollTop+"px";
menu1.style.display="";
var hid = $("hidRecordIdForMenu");
if (hid != null)
{
hid.value = rid;
}
//menu1.setCapture();
}如果你的页面顶部有
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
就用document.documentElement.scrollTop来获取卷去的高度.