马克的足迹! html, javascript, css, php, python develop and design

19六/09

jquery 处理表单元素得到焦点与失去焦点

	/*处理表单元素得到焦点与失去焦点*/
	jQuery('.input_text').focus(function(){
		var i = jQuery(this).attr('init_val');
		var t = jQuery(this).attr('user_val');
		if(i==undefined){
			//记录初始值
			jQuery(this).attr('init_val',jQuery(this).val());
			jQuery(this).val('');
		}else if(i==jQuery(this).val()){
			jQuery(this).val('');
		}else{
			jQuery(this).val(t);
		}
		jQuery(this).css('color','#333');
	}).blur(function(){	

		i = jQuery(this).attr('init_val');	

		if(jQuery(this).val()==''|| jQuery(this).val()==i){
			jQuery(this).css('color','#bbb');
			jQuery(this).val(jQuery(this).attr('init_val'));
		}else{
			jQuery(this).attr('user_val',jQuery(this).val());
			jQuery(this).css('color','#333');
		}

	});
18六/09

用于解决iframe自适应高度

function reinitIframe(){
	var iframe = document.getElementById("frame_content");
	try{
		var bHeight = iframe.contentWindow.document.body.scrollHeight;
		var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
		var height = Math.max(bHeight, dHeight);
		iframe.height =  height;
	}catch (ex){}
}
window.setInterval("reinitIframe()", 1000);

在新浪站上看到的不错,收藏下.

12六/09

smarty截取中文字符乱码问题解决方案(这个比较完整了)-转

改良的smartTruncate: 文件名:modifier.smartTruncate.php

 127 ? $number : 1; 

        $result += $bytes > 1 ? 1.0 : 0.5;
    } 

    return $result;
} 

function smartSubstr($string, $start, $length = null)
{
    $result = ''''; 

    $number = smartDetectUTF8($string) ? 3 : 2; 

    if($start < 0)
    {
        $start = max(smartStrlen($string) + $start, 0);
    } 

    for($i = 0; $i < strlen($string); $i += $bytes)
    {
        if($start <= 0)
        {
            break;
        } 

        $bytes = ord(substr($string, $i, 1)) > 127 ? $number : 1; 

        $start -= $bytes > 1 ? 1.0 : 0.5;
    } 

    if(is_null($length))
    {
        $result = substr($string, $i);
    }
    else
    {
        for($j = $i; $j < strlen($string); $j += $bytes)
        {
            if($length <= 0)
            {
                break;
            } 

            if(($bytes = ord(substr($string, $j, 1)) > 127 ? $number : 1) > 1)
            {
                if($length < 1.0)
                {
                    break;
                } 

                $result .= substr($string, $j, $bytes);
                $length -= 1.0;
            }
            else
            {
                $result .= substr($string, $j, 1);
                $length -= 0.5;
            }
        }
    } 

    return $result;
} 

function smarty_modifier_smartTruncate($string, $length = 80, $etc = ''...'',
                                       $break_words = false, $middle = false)
{
    if ($length == 0)
        return ''''; 

    if (smartStrlen($string) > $length) {
        $length -= smartStrlen($etc);
        if (!$break_words && !$middle) {
            $string = preg_replace(''/\s+?(\S+)?$/'', '''', smartSubstr($string, 0, $length+1));
        }
        if(!$middle) {
            return smartSubstr($string, 0, $length).$etc;
        } else {
            return smartSubstr($string, 0, $length/2) . $etc . smartSubstr($string, -$length/2);
        }
    } else {
        return $string;
    }
}
?>

以上代码完整实现了truncate的原有功能,而且可以同时兼容GB2312和UTF-8编码,在判断字符长度的时候,一个中文字符算1.0,一个英文字符算0.5,所以在截取子字符串的时候不会出现参差不齐的情况.

插件的使用方式没有特别之处,这里简单测试一下:

{$content|smartTruncate:5:".."}($content等于"A中B华C人D民E共F和G国H")

显示:A中B华C.. (中文符号长度算1.0,英文符号长度算0.5,并且考虑省略符号的长度)

不管你是使用GB2312编码还是UTF-8编码,你会发现结果都正确,这也是为什么我在插件名字里加上smart字样的原因之一。

10六/09

今天写的一个练习的js类模式

suspendcode="
’关闭对联广告’
" document.write(suspendcode); var hp = { lastScrollY : 0, byID : function(_id){ return document.getElementById(_id);}, init : function(id){ var st = document.documentElement.scrollTop || document.body.scrollTop; percent=.1*(st-this.lastScrollY); if(percent>0){ percent=Math.ceil(percent); }else{ percent=Math.floor(percent); } this.byID(id).style.top=parseInt(this.byID(id).style.top)+percent+"px"; this.lastScrollY=this.lastScrollY+percent; return id; }, generate : function(){ }, start : function(id){ window.setInterval("hp.init(’"+id+"’)",1); } }; #hp.start(’lovexin1′);