漂浮窗口拖动杂谈(续)

以前我发过一个:实现浏览器兼容的漂浮窗体拖动/改变尺寸的技术要点

另外还提到一个 jquery 的插件 easydrag,这个插件处理拖放还算好用,但自从我上次修改后,现在又发现了它的另一个 bug. 在应用了 easydrag 的页面中,某种情况下会在页面加载时出现“找不到对象”的脚本错误。经过仔细检查,发现问题在于 easydrag 中过早的绑定了 document 的 mousemove 和 mouseup 事件,而有时候脚本加载的时候 document 还没有 ready, 自然就会“找不到对象”了。

解决问题的办法很简单,我们推迟这两个事件的绑定即可:

function mousemove_handler(e){
    
// 
}

function mouseup_handler(e){
    
// 
    // 解除鼠标移动和弹起事件的处理函数绑定
    $(document).unbind("mousemove", mousemove_handler).unbind("mouseup", mouseup_handler);
}

$(
"#拖动目标").mousedown(function(){
    
// 
    // 添加鼠标移动和弹起事件的处理函数绑定
    $(document).mousemove(mousemove_handler).mouseup(mouseup_handler);
})

注意上面代码中 unbind 事件也是很必要的。

另外推荐一个很好的 jquery 插件 —— background iframe.
以前我们写网页中的日历控件之类的,为了遮住 <select> (IE 6.0 或以下),一般都是用一个

<div>
  
<iframe></iframe>
</div>

来加载弹出的内容。但是这样有个问题,就是加载的文档和当前文档不是一个页面,那么在 asp.net 等后台代码里,就不是很方便做数据绑定,因为多了一个页面,就需要多出很多不必要的变量传递工作。

而 background iframe 的原理是,你可以在当前页面的 <div></div> 里直接写弹出内容,它负责动态的在这个 div 中插入一个透明的 iframe 作为背景的遮罩,这样也一样能达到遮挡 <select> 的效果。
调用方式也非常简单:

$("#some_layer").bgiframe();

这样就可以了。

这里联想到,编程真的是思路最重要。记得以前看 meizz 的日历控件代码,通过 iframe 的方式写入,实现很复杂,现在如果换了 background iframe 这个思路,问题很简单就解决了。


posted @ 2007-11-01 17:56 木野狐(Neil Chen) 阅读(3109) 评论(9)  编辑 收藏 所属分类: 网页技术

  回复  引用  查看    
#1楼 2007-11-01 22:16 | 一瓢      
博主对js研究的很深啊
  回复  引用  查看    
#2楼 [楼主]2007-11-01 22:50 | 木野狐(Neil Chen)      
@一瓢
不敢,互相学习。
  回复  引用  查看    
#3楼 2007-11-02 00:20 | cnlamar      
狐狸同学,我想做一个类似QQ空间的自定义布局的东西,工作量与难度有多大?

对这方面有强烈兴趣,多交流:D
  回复  引用  查看    
#4楼 [楼主]2007-11-02 01:08 | 木野狐(Neil Chen)      
@cnlamar

QQ 空间我还没有用过,自定义布局也许可以参考一下 http://google.com/ig 的脚本。
  回复  引用  查看    
#5楼 2007-11-02 18:17 | 一瓢      
@ 木野狐
希望有时间介绍一下,现在主流的网站开发技术。考虑到ViewState的原因,现在很多人基本不用asp.net自带的控件,那么这样也不会使用asp.net ajax控件。实际上如果使用自己编写的ajax的js组件,一是封装程度不够。二是未必很健壮,如果在项目中使用,累的恐怕会是自己。
所以介绍一下静态页面方面生成的知识,不知道园子里有没有人使用asp.net开发日访问量很高的网站。
  回复  引用  查看    
#6楼 2007-11-02 18:24 | 一瓢      
不知道MonoRail是不是现在最主流的门户网站开发技术
  回复  引用    
#7楼 2007-11-05 11:57 | 笑苍天 [未注册用户]
如楼上所言 其实现在的MonoRails的发展还是有目共睹的,个人也用过一段时间 感觉里面所采用的脚本语言和MVC的模式是相当的不错的,配合着楼主所说的JQuery框架以及JQuery[比较喜欢JQuery操作所产生的JQuery对象,方便的多次操作]所衍生出来的超多的JS组件[好像现在还有很多的界面性的,效果非常酷]对于AJAX更是不在话下,去做WEB的开发 确实比较"爽", 感觉好像"无敌"了^_^||
仅一家之言,欢迎大家排砖,呵呵
  回复  引用  查看    
#8楼 [楼主]2007-11-05 21:41 | 木野狐(Neil Chen)      
@一瓢
"使用asp.net开发日访问量很高的网站"
==
这个我觉得主要是后台的架构和优化,有很大的文章可做;前台 ViewState 是一个很大的负担,如果少用则会显著提高性能。

MonoRail 我不是很了解,好像看到网上介绍的应用例子不是很多吧。

asp.net webform 的架构,做企业应用比较得心应手。如果做网站,目前还是其他一些技术使用量比较大一些,比如 php, python 等,甚至 asp.
  回复  引用  查看    
#9楼 [楼主]2007-11-05 21:43 | 木野狐(Neil Chen)      
@笑苍天
是啊,jquery 确实非常好用,最喜欢的是级联调用的随意感觉,而相比而言 prototype 要学术化一点,没有 jquery 那么方便。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接:

历史上的今天:
2006-11-01 关于 IE 模态对话框的两个问题