正在加载...

chrome下设置光标位置

十一月 3rd, 2011

代码如下:

<input id="hidenTag" type="hidden">
<input class="long-input" style = "width:350px" type="text" name="tags" value="" id="tags" onfocus="clearInterval(auto);"
 onkeyup="$('#hidenTag').val(getCursorPosition(this));value=value.replace(/,/g,',');setCursorPosition(this,$('#hidenTag').val())" 
 onblur="value=value.replace(/,{2,}/g,',');">
&nbsp;&nbsp;&nbsp;<a href="javascript:;" onclick="javascript:funQieci();">获取TAG分词</a>

在一个内部CMS中,会自动根据相关条件做分词处理,个别时候允许人工干预(就是手工设置tag分词),问题随之而来,用户会中英文混用输入','和',' ,而且删除时可能会留下两个逗号,所以多了几个处理

onkeyup="value=value.replace(/,/g,',');onblur="value=value.replace(/,{2,}/g,',');"

上面的代码能有效处理中英文逗号和多个逗号,但是一个副作用就是chrome浏览器下每一次onkeyup,光标都会置于最后一个位置,导致用户不能制止的误删tag分词。 寻得javascript代码如下:

//控制鼠标光标相关
function getCursorPosition (obj) {//获取光标位置函数
	var CaretPos = 0;	// IE Support
	if (document.selection) {
	obj.focus ();
		var Sel = document.selection.createRange ();
		Sel.moveStart ('character', -obj.value.length);
		CaretPos = Sel.text.length;
	}
	// Firefox support
	else if (obj.selectionStart || obj.selectionStart == '0')
		CaretPos = obj.selectionStart;
	return (CaretPos);
}

function setCursorPosition(obj, pos){//设置光标位置函数
	if(obj.setSelectionRange)
	{
		obj.focus();
		obj.setSelectionRange(pos,pos);
	}
	else if (obj.createTextRange) {
		var range = obj.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

原理就是每一次onkeyup获取当前光标位置,然后立马设置光标位置,但是setCursortPosition函数不能和getCursortPosition 套用,也就是不能这样使用

setCursorPosition(this,getCursorPosition(this))

所以采用一个隐藏的表单项传值 $('#hiddenTag'),进而每一次onkeyup先获取光标位置赋值到隐藏ID,然后执行过滤,然后设置光标位置,值为隐藏的ID的值。

鼠标广告js控制代码出处 http://www.js8.in/466.html

vps环境(centos 5)下SVN服务器的安装与配置

七月 20th, 2011

下载源代码

wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz

下载依赖库

wget http://subversion.tigris.org/downloads/subversion-deps-1.6.1.tar.gz

两个文件必须解压在同一目录

tar -zxvf subversion-1.6.1.tar.gz

tar -zxvf subversion-deps-1.6.1.tar.gz

svn存储版本数据有2种方式: 

1. bdb 这个就是berkeley-db

2. fsfs

据说bdb方式在服务器中断时,有可能锁住数据,所以选择fsfs方式

(..More)

UnicodeEncodeError: 'ascii' codec can't encode characters

三月 4th, 2011

UnicodeEncodeError: 'ascii' codec can't encode characters   ……blabla

python里面出现这个错误,记录一个解决办法:

在C:\Python25\Lib目录里,新建文件sitecustomize.py,内容为

import sys   

sys.setdefaultencoding('utf-8')  

vps搭建黑莓MDS服务器

十二月 30th, 2010

这里的MDS是指“黑莓断续膏”所需的MDS服务器。

先说明情况,自己是1036混刷的900的中文语言包,1036对于我的机器来说有个好处,就是再也不随便重启了,但是经常断网

于是有了软件“黑莓断续膏”,并且提供了客户端和服务端的所有源代码(java)【RAiN】,紧接着再有了linux下C语言的源代码【zengbo】

看在BB一点断几次网的情况下,一个稳定的MDS服务器是非常重要滴,于是翻了“感触黑莓”里面的几个帖子,将我的VPS后台

开设了一个MDS常驻服务,以下代码及步骤都是整理以及记录,源码及知识产权归原作者!

//////////////////

1:首先下载MDS源代码(下载),解压后里面有3个文件:mds.c,mds,Makefile 。其中mds是一个linux下的命令文件,是由mds.c经由gcc编译而来的

编译命令在Makefile里面:gcc -o mds mds.c

我是放在/data/mds 目录下面

2:vim 编辑 开机启动脚本文件 vim /etc/rc.d/rc.local,加入以下命令:/data/mds/mds 19781 >/dev/null 2>&1 &     其中19781是端口号

可自定义其他数字,然后esc ,shift+wq保存退出,这样vps再重启也会自动开始服务了

3:开启mds服务,执行以下命令:/data/mds/mds 19781 >/dev/null 2>&1 &    ,收工!

最后,如果你安装了黑莓断续膏,MDS服务器就可以填写VPS的IP啦,如果有防火墙规则,则可能需要执行以下命令

iptables -A INPUT -p udp --dport 19781 -j ACCEPT

Gmail免费拨打国内电话[已失效]

八月 29th, 2010

引自 使用 Gmail 拨打国内电话,通话双方均免费的方法

我们知道使用 Gmail 给美国和加拿大拨打电话是完全免费的,现在 Google 则再一次震撼到了我们!只要使用 Gmail 拨打国内电话,通话双方均全部免费!

操作的步骤如下:

1、确保登录 Gmail 后可以看到在 Chat 列表中看到 "Call phone"按钮。这有2个方法:

其一、使用美国或加拿大 IP 地址登录 Gmail 肯定能看到该按钮;
其二、把 Gmail 语言设置成 US English ,也是有可能使用到呼叫功能的。

2、安装 Gmail voice and video chat 浏览器插件

(..More)