用javascript来获取用户客户端分辨率
2008-05-01 06:23
134 查看
我做了一个网页导航下拉菜单,用firework可以很快生成,只用把代码拷贝到页面中就可以了,可是用户端不同分辨率造成了下拉菜单位置的移动,如何在800和1024的菜单下保持正确的显示,修改js文件中的一个函数就可以,y只不用变化,只用更改x坐标变量即可
function mm_showmenu(menu, x, y, child, imgname) {
if (!window.mmwrotemenu) return;
mm_cleartimeout();
if (menu) {
var obj = find(imgname)
document.images[imgname]
document.links[imgname]
document.anchors[imgname];
if (window.screen.width==800 && window.screen.height==600)//用来800*600分辨率设置
{
x = movexbyslicepos (x-100, obj);
y = moveybyslicepos (y, obj);
}
if (window.screen.width==1024 && window.screen.height==768)// 1024分辨率设置
{
x = movexbyslicepos (x, obj);
y = moveybyslicepos (y, obj);
}
}
if (document.layers) {
if (menu) {
var l = menu.menulayer
menu;
l.top = l.left = 1;
hideactivemenus();
if (this.visibility) l = this;
window.activemenu = l;
} else {
var l = child;
}
if (!l) return;
for (var i=0; i<l.layers.length; i++) {
if (!l.layers[i].ishilite) l.layers[i].visibility = "inherit";
if (l.layers[i].document.layers.length > 0) mm_showmenu(null, "relative", "relative", l.layers[i]);
}
if (l.parentlayer) {
if (x != "relative") l.parentlayer.left = x
window.pagex
0;
if (l.parentlayer.left + l.clip.width > window.innerwidth) l.parentlayer.left -= (l.parentlayer.left + l.clip.width - window.innerwidth);
if (y != "relative") l.parentlayer.top = y
window.pagey
0;
if (l.parentlayer.iscontainer) {
l.menu.xoffset = window.pagexoffset;
l.menu.yoffset = window.pageyoffset;
l.parentlayer.clip.width = window.activemenu.clip.width +2;
l.parentlayer.clip.height = window.activemenu.clip.height +2;
if (l.parentlayer.menucontainerbgcolor && l.menu.menubgopaque ) l.parentlayer.document.bgcolor = l.parentlayer.menucontainerbgcolor;
}
}
l.visibility = "inherit";
if (l.menu) l.menu.container.visibility = "inherit";
} else if (find("menuitem0")) {
var l = menu.menulayer
menu;
hideactivemenus();
if (typeof(l) == "string") l = find(l);
window.activemenu = l;
var s = l.style;
s.visibility = "inherit";
if (x != "relative") {
s.pixelleft = x
(window.pagex + document.body.scrollleft)
0;
s.left = s.pixelleft + 'px';
}
if (y != "relative") {
s.pixeltop = y
(window.pagey + document.body.scrolltop)
0;
s.top = s.pixeltop + 'px';
}
l.menu.xoffset = document.body.scrollleft;
l.menu.yoffset = document.body.scrolltop;
}
if (menu) window.activemenus[window.activemenus.length] = l;
mm_cleartimeout();
}
<
function mm_showmenu(menu, x, y, child, imgname) {
if (!window.mmwrotemenu) return;
mm_cleartimeout();
if (menu) {
var obj = find(imgname)
document.images[imgname]
document.links[imgname]
document.anchors[imgname];
if (window.screen.width==800 && window.screen.height==600)//用来800*600分辨率设置
{
x = movexbyslicepos (x-100, obj);
y = moveybyslicepos (y, obj);
}
if (window.screen.width==1024 && window.screen.height==768)// 1024分辨率设置
{
x = movexbyslicepos (x, obj);
y = moveybyslicepos (y, obj);
}
}
if (document.layers) {
if (menu) {
var l = menu.menulayer
menu;
l.top = l.left = 1;
hideactivemenus();
if (this.visibility) l = this;
window.activemenu = l;
} else {
var l = child;
}
if (!l) return;
for (var i=0; i<l.layers.length; i++) {
if (!l.layers[i].ishilite) l.layers[i].visibility = "inherit";
if (l.layers[i].document.layers.length > 0) mm_showmenu(null, "relative", "relative", l.layers[i]);
}
if (l.parentlayer) {
if (x != "relative") l.parentlayer.left = x
window.pagex
0;
if (l.parentlayer.left + l.clip.width > window.innerwidth) l.parentlayer.left -= (l.parentlayer.left + l.clip.width - window.innerwidth);
if (y != "relative") l.parentlayer.top = y
window.pagey
0;
if (l.parentlayer.iscontainer) {
l.menu.xoffset = window.pagexoffset;
l.menu.yoffset = window.pageyoffset;
l.parentlayer.clip.width = window.activemenu.clip.width +2;
l.parentlayer.clip.height = window.activemenu.clip.height +2;
if (l.parentlayer.menucontainerbgcolor && l.menu.menubgopaque ) l.parentlayer.document.bgcolor = l.parentlayer.menucontainerbgcolor;
}
}
l.visibility = "inherit";
if (l.menu) l.menu.container.visibility = "inherit";
} else if (find("menuitem0")) {
var l = menu.menulayer
menu;
hideactivemenus();
if (typeof(l) == "string") l = find(l);
window.activemenu = l;
var s = l.style;
s.visibility = "inherit";
if (x != "relative") {
s.pixelleft = x
(window.pagex + document.body.scrollleft)
0;
s.left = s.pixelleft + 'px';
}
if (y != "relative") {
s.pixeltop = y
(window.pagey + document.body.scrolltop)
0;
s.top = s.pixeltop + 'px';
}
l.menu.xoffset = document.body.scrollleft;
l.menu.yoffset = document.body.scrolltop;
}
if (menu) window.activemenus[window.activemenus.length] = l;
mm_cleartimeout();
}
<
相关文章推荐
- JavaScript 获取用户客户端操作系统版本
- javascript 获取客户端浏览器的分辨率
- JavaScript 获取用户客户端操作系统版本
- JavaScript获取用户客户端操作系统版本
- JavaScript 获取用户客户端操作系统版本
- 用javascript 获取客户端的域用户名
- js javascript 获取客户端 分辨率 颜色
- Coolite控件 客户端JavaScript获取值的方式
- [ProblemSolving]iNode客户端数据库连接失败及IP地址获取方式检查不通过,强制用户下线
- JavaScript 获取客户端计算机硬件及系统信息
- Windows客户端开发--获取屏幕分辨率及大小相关
- 用javascript获取 下拉框 用户选定的文本
- JS获取客户端信息(屏幕分辨率、浏览器版本、操作系统版本)
- 用JavaScript获取客户端MAC地址(转)
- 【用jQuery来判断浏览器的类型】及【javascript获取用户ip地址】
- 利用JavaScript获取客户端的硬盘序列号
- html 获取客户端屏幕分辨率 传回服务端处理
- javascript 获得 客户端 分辨率 的值
- php获取用户(客户端)真实IP地址的三种方法
- 服务器获取客户端用户IP