[百度空间] 百度空间中实现拖拽、悬浮窗口效果的popup.js分析,如何修改,才能通用 ?

web_sky 2008-03-20 01:23:08
效果不错,但是只能兼容 IE,不兼容 FF,

下载 全部 代码之后,发现 能弹出 窗体,但是不能拖动。
function openaddcat(url)
{
g_pop=new Popup({ contentType:1,isHaveTitle:true,scrollType:true,isBackgroundCanClick:false,isSupportDraging:true,isShowShadow:true, isReloadOnClose:false, width:410, height:150 });
g_pop.setContent("title","iframe框架示例");
g_pop.setContent("contentUrl",url);
g_pop.build();
g_pop.show();
}
详情参见:
http://www.cnblogs.com/Csharp-net/archive/2008/03/19/1113442.html

最后,我到网上也找了一些,都是 和我一样,说是原封不动的把 百度空间的代码扣下来了。
但是在 IE 下运行 ,弹出窗体之后,都无法拖动 。

希望 懂 JS 的 ,可以给我们修改一下,
...全文
517 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudgamer 2008-11-17
  • 打赏
  • 举报
回复
jackyBody 2008-03-24
  • 打赏
  • 举报
回复
要到哦 
live_7sky 2008-03-21
  • 打赏
  • 举报
回复
大家看一下演示 效果:

http://bbs.51js.com/thread-75568-1-1.html

唯一不足的 就是不兼容 FF
live_7sky 2008-03-21
  • 打赏
  • 举报
回复
tjgjp========
看了你的代码,不支持 FF
live_7sky 2008-03-21
  • 打赏
  • 举报
回复
救命啊 。
live_7sky 2008-03-21
  • 打赏
  • 举报
回复


以后有问题,就直接 点名 向你请教。
live_7sky 2008-03-21
  • 打赏
  • 举报
回复

mumuTiger

美女终于搞定了 , 真的只是加一个 PX 就好了,

准备结贴,但是 还有一个请求 : 加我 QQ :757015000

,哈哈,以后 多 向你 请教 。

实在不愿意的话,我星期 一 就结贴 。
live_7sky 2008-03-21
  • 打赏
  • 举报
回复
楼上的
你确定 只是 px 的问题,

而不是 IE,与 FF 中的某一些 属性,方法不同 而导致 在FF 下无法 拖动。
jackyBody 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 web_sky 的回复:]
如果在 网上 搜,一大堆不 专业的,
现在 可以在 IE 里面用了,但是无法 在 FF 下拖动。

JS 里面拖动的代码:
var Dragdrop=new Class();
Dragdrop.prototype=
{
initialize:=width;
this.height=height;
this.shadowWidth=sh…
[/Quote]

类似 x:parseInt(this.oObj.style.left),y:parseInt(this.oObj.style.top)
 都加上"px"试试
jackyBody 2008-03-21
  • 打赏
  • 举报
回复
怎么能传附件上来呀 ??? 上传附件找不到地方!
tengfei3003 2008-03-20
  • 打赏
  • 举报
回复
学习 拖拽中
web_sky 2008-03-20
  • 打赏
  • 举报
回复
代码也不是 很多,哪怕 我对 JS 懂一点,我自己 也可以 修改了,

今天 散分,就是 希望 各位高手帮帮忙。
web_sky 2008-03-20
  • 打赏
  • 举报
回复
希望大家 能把 上面的JS 代码 里面的 拖动的 几个关键字 改 一下,让我能在 FF 下用。

web_sky 2008-03-20
  • 打赏
  • 举报
回复
如果在 网上 搜,一大堆不 专业的,
现在 可以在 IE 里面用了,但是无法 在 FF 下拖动。

JS 里面拖动的代码:
var Dragdrop=new Class();
Dragdrop.prototype=
{
initialize:function(width,height,shadowWidth,showShadow,contentType)
{
this.dragData=null;
this.dragDataIn=null;
this.backData=null;
this.width=width;
this.height=height;
this.shadowWidth=shadowWidth;
this.showShadow=showShadow;
this.contentType=contentType;
this.IsDraging=false;
this.oObj=G('dialogBox');
Event.observe(G('dialogBoxTitle'),"mousedown",this.moveStart.bindAsEventListener(this),false)
}
,moveStart:function(event)
{
this.IsDraging=true;
if(this.contentType==1)
{
G("iframeBG").style.display="";
G("iframeBG").style.width=this.width;
G("iframeBG").style.height=this.height
};
Event.observe(document,"mousemove",this.mousemove.bindAsEventListener(this),false);
Event.observe(document,"mouseup",this.mouseup.bindAsEventListener(this),false);
Event.observe(document,"selectstart",this.returnFalse,false);
this.dragData=
{
x:Event.pointerX(event),y:Event.pointerY(event)
};
this.backData=
{
x:parseInt(this.oObj.style.left),y:parseInt(this.oObj.style.top)
}
}
,mousemove:function(event)
{
if(!this.IsDraging)return;
var iLeft=Event.pointerX(event)-this.dragData["x"]+parseInt(this.oObj.style.left);
var iTop=Event.pointerY(event)-this.dragData["y"]+parseInt(this.oObj.style.top);
if(this.dragData["y"]<parseInt(this.oObj.style.top))iTop=iTop-12;
else if(this.dragData["y"]>parseInt(this.oObj.style.top)+25)iTop=iTop+12;
this.oObj.style.left=iLeft;
this.oObj.style.top=iTop;
if(this.showShadow)
{
G('dialogBoxShadow').style.left=iLeft+this.shadowWidth;
G('dialogBoxShadow').style.top=iTop+this.shadowWidth
};
this.dragData=
{
x:Event.pointerX(event),y:Event.pointerY(event)
};
document.body.style.cursor="move"
}
,mouseup:function(event)
{
if(!this.IsDraging)return;
if(this.contentType==1)G("iframeBG").style.display="none";
document.onmousemove=null;
document.onmouseup=null;
var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||document.body.scrollLeft);
var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||document.body.scrollTop);
if(mousX<1||mousY<1||mousX>document.body.clientWidth||mousY>document.body.clientHeight)
{
this.oObj.style.left=this.backData["x"];
this.oObj.style.top=this.backData["y"];
if(this.showShadow)
{
G('dialogBoxShadow').style.left=this.backData.x+this.shadowWidth;
G('dialogBoxShadow').style.top=this.backData.y+this.shadowWidth
}
};
this.IsDraging=false;
document.body.style.cursor="";
Event.stopObserving(document,"selectstart",this.returnFalse,false)
}
,returnFalse:function()
{
return false
}
};
yeaky 2008-03-20
  • 打赏
  • 举报
回复
还不如用个jquery,mootools,或者prototype呢,
tjgjp 2008-03-20
  • 打赏
  • 举报
回复
我这有个例子 或许能帮助你 直接保存成.htm形式就能看到效果

代码:

<script language='JScript'><!--
function initialize()
{
var a = new xWin("1",190,200,600,420,"状态",'');
}
window.onload = initialize;
//--></script>
<html>
<body>
<script>
<!--
//可以打包为js文件;
var x0=0,y0=0,x1=0,y1=0;
var offx=6,offy=6;
var moveable=false;
var hover='orange',normal='orange';//color;
var index=10000;//z-index;
//开始拖动;
function startDrag(obj)
{
//锁定标题栏;
obj.setCapture();
//定义对象;
var win = obj.parentNode;
var sha = win.nextSibling;
//记录鼠标和层位置;
x0 = event.clientX;
y0 = event.clientY;
x1 = parseInt(win.style.left);
y1 = parseInt(win.style.top);
//记录颜色;
normal = obj.style.backgroundColor;
//改变风格;
obj.style.backgroundColor = hover;
win.style.borderColor = hover;
obj.nextSibling.style.color = hover;
sha.style.left = x1 + offx;
sha.style.top = y1 + offy;
moveable = true;
}
//拖动;
function drag(obj)
{
var win = obj.parentNode;
var sha = win.nextSibling;
if(moveable)
{
win.style.left = x1 + event.clientX - x0;
win.style.top = y1 + event.clientY - y0;
sha.style.left = parseInt(win.style.left) + offx;
sha.style.top = parseInt(win.style.top) + offy;
}
}
//停止拖动;
function stopDrag(obj)
{
var win = obj.parentNode;
var sha = win.nextSibling;
win.style.borderColor = normal;
obj.style.backgroundColor = normal;
obj.nextSibling.style.color = normal;
sha.style.left = obj.parentNode.style.left;
sha.style.top = obj.parentNode.style.top;
//放开标题栏;
obj.releaseCapture();
moveable = false;
}
//获得焦点;
function getFocus(obj)
{
index = index + 2;
var idx = index;
obj.style.zIndex=idx;
obj.nextSibling.style.zIndex=idx-1;
}
function min(obj)
{
var win = obj.parentNode.parentNode;
var sha = win.nextSibling;
var tit = obj.parentNode;
var msg = tit.nextSibling;
var flg = msg.style.display=="none";
if(flg)
{
win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2;
sha.style.height = win.style.height;
msg.style.display = "block";
obj.innerHTML = "0";
}
else
{
win.style.height = parseInt(tit.style.height) + 2*2;
sha.style.height = win.style.height;
obj.innerHTML = "2";
msg.style.display = "none";
}
}
function cls(obj)
{
var win = obj.parentNode.parentNode;
var sha = win.nextSibling;
win.style.visibility = "hidden";
sha.style.visibility = "hidden";
}
//创建一个对象;
function xWin(id,w,h,l,t,tit,msg)
{
index = index+2;
this.id = id;
this.width = w;
this.height = h;
this.left = l;
this.top = t;
this.zIndex = index;
this.title = tit;
this.message = msg;
this.obj = null;
this.bulid = bulid;
this.bulid();
}
//初始化;
function bulid()
{
var str = ""
+ "<div id=xMsg" + this.id + " "
+ "style='"
+ "z-index:" + this.zIndex + ";"
+ "width:" + this.width + ";"
+ "height:" + this.height + ";"
+ "left:" + this.left + ";"
+ "top:" + this.top + ";"
+ "background-color:" + normal + ";"
+ "color:" + normal + ";"
+ "font-size:10px;"
+ "font-family:Verdana;"
+ "position:absolute;"
+ "cursor:default;"
+ "border:2px solid " + normal + ";"
+ "' "
+ "onmousedown='getFocus(this)'>"
+ "<div "
+ "style='"
+ "background-color:" + normal + ";"
+ "width:" + (this.width-2*2) + ";"
+ "height:20;"
+ "color:white;"
+ "' "
+ "onmousedown='startDrag(this)' "
+ "onmouseup='stopDrag(this)' "
+ "onmousemove='drag(this)' "
+ ">"
+ "<span style='width:" + (this.width-2*12-4) + ";padding-left:3px;font-size:9pt;'>" + this.title + "</span>"
+ "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='min(this)'>0</span>"
//+ "<span style='width:12;border-width:0px;color:white;font-family:webdings;' onclick='cls(this)'>r</span>"
+ "</div>"
+ "<div style='"
+ "width:100%;"
+ "height:" + (this.height-20-4) + ";"
+ "background-color:white;"
+ "line-height:18px;"
+ "word-break:break-all;"
+ "padding:3px;font-size:9pt;color:black;"
//+ "'>" + this.message + "</div>"
+ "'><iframe name=win width=100% height=100% marginheight=0 marginwidth=0 frameborder=0 scrolling=auto src=flpage.aspx?mess="+this.message+"></iframe></div>"
+ "</div>"
+ "<div style='"
+ "width:" + this.width + ";"
+ "height:" + this.height + ";"
+ "top:" + this.top + ";"
+ "left:" + this.left + ";"
+ "z-index:" + (this.zIndex-1) + ";"
+ "position:absolute;"
+ "background-color:black;"
+ "filter:alpha(opacity=40);"
+ "'>?</div>";
//alert(str);
document.body.insertAdjacentHTML("beforeEnd",str);
}
//-->
</script>
</body>
</html>

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧