2013年7月 的存档

javascript需要避免的一些变量

任何一门编程语言都有一些保留字,javascript也不例外,至于有哪些这里就不一一罗列了,随便搜索下就知道了,而且一般情况下我们也不会越雷池的。

不过在开发中遇到了一些比较奇怪的现象,最典型的情况就是明明给某个对象添加了某个方法,但是在调用时就是报错。

这里需要说明的是,定义变量的时候采用了合并的方式,就是说如果之前该变量已经定义过,此处就指向该变量,否则定义为空对象。

请看下面的例子:

拿这段代码在firebug中执行会看到

Error: Cannot modify properties of a WrappedNative

如果改为直接定义变量,则没有问题。

我们直接在firebug中查看sidebar,发现

[xpconnect wrapped (nsISupports, nsISidebar, nsISidebarExternal)] { QueryInterface=QueryInterface(), addPanel=addPanel(), addPersistentPanel=addPersistentPanel(), 更多…}

应该是浏览器使用了这个变量,看来我们只有绕道了。

似乎这样的变量还不止一两个,至于有多少,有没有列表飞尘真的是不晓得了,查了半天也没弄出个所以然来,看来只能靠大家慢慢搜集整理了,希望有一天可以发布一份变量冲突表,以飨读者。

变量名 IE Firefox Chrome
sidebar xpconnect wrapped
top object Window window window

使用javascript实现回车提交表单

在web开发中,表单提交是最普通不过的事情了,也是使用很频繁的一种交互方式,例如我们几乎每天都有遇到的用户登陆。

绝大部分的网站在为用户提供服务时都要求用户进行登陆,这无可厚非,暂时也是必然的选择,否则怎么能为用户提供个性化的服务呢?

闲话又扯了一大堆,说正事吧。登陆既然必不可少,那就登陆呗,不过这里也是有些值得探究的。现在不都提倡用户体验吗,登陆这个事情自然也应该优化一下,其实这个早在很多年前就有了,比如登陆时的记住密码,选中后用户下次访问网站就不必再进行登陆了,不过对于现代人对隐私性的要求及安全性的考虑,有些时候是不太适合做记住密码处理的,这样用户每次必须重新登陆才可。

记得有人说过,能让用户点一下,就不要让用户点两下,我们的上帝时间很宝贵的,也是很懒的哦,呵呵。出于这样的考虑,当用户输入完用户名、密码时,接下来要做的就是点击登陆,可是一般情况下,输入是在键盘上操作的,而要点击“登陆”,需要换手到鼠标,然后移动到登陆按钮上点击才能完成登陆,这样的操作虽然并不是很麻烦,但是本着精益求精的精神,我们应该压榨再压榨,把它榨干为止。

其实很简单啦,用户输入完成,敲下回车就能实现登陆,这样的速度绝对秒杀鼠标点点吧。

这里飞尘要想多了一点,其它的表单也是可以回车提交的,所以这里处理起来有一点需要注意的,填表单的时候,一般情况下浏览器会记录用户曾经输入的内容,如果用户输入相同的内容,之前的历史会下拉显示,这时用户通过键盘方向键可以直接选择内容,回车确定,这里就需要将这样的回车区别开来,否则直接提交表单就不是我们所希望的了。

罗里吧嗦的说了那么多,口都干了,赶紧上点实货吧。众里寻他千百度,暮然回首,代码就在灯火阑珊处。

删除ckeditor中图片

作为富文本编辑器,ckeditor提供了丰富的功能供使用,自然图片上传是比不可缺的。

对于服务端如何配合图片上传不在本文的讨论范围,这个相信搜索一下就不乏大面积的教程文章之类的。

飞尘在这里是遇到这样的功能需要,图片上传之后,需要一个删除功能,可能这样表述的不是很明确。就以一般论坛为例,发过帖子的都应该知道,可以上传附件,附件上传后也可以删除。这里的图片也做类似的处理,即有个图片附件的列表,显示所有已经上传的图片,图片上传后是可以直接插入到当前编辑的内容中的,此时如果在图片附件列表中删除了某个图片,而图片已经被插入到内容中,就会出现不同步的情况,编辑的内容在显示的时候就会引用一张被删除的图片,这是我们不希望看到的。

于是我们希望删除图片附件的同时,将编辑内容中的图片也一并删除,这样就可以保持同步了。

思路大概是这个样子,图片的地址在上传后我们是知道的,这样在删除图片附件时,从编辑内容中查找到该图片节点,并将其删除,看上去好像很简单哦,嗯,的确使得,嘿嘿。

那就不再多啰嗦了,附上一段样例代码吧: