极湖

无不用其“极”

Subscribe to RSS feed

动态加载 js 和 css 文件的代码

, ,

写了几个函数,结果没用上。
感觉这些代码还是有些用处,所以贴在这儿,以备查用。
var headerHelper = {
    //*******************************************************
    // 动态加载js文件
    //*******************************************************
    loadJsFile: function(sUrl, doc) {
        doc = doc || document;
        var fileref = doc.createElement('script');
        fileref.setAttribute("type","text/javascript");
        fileref.setAttribute("src", sUrl);
        doc.getElementsByTagName("head")[0].appendChild(fileref);
    },
    //*******************************************************
    // 将header中的js文件删除
    //*******************************************************
    removeJsFile: function(sUrl, doc) {
        doc = doc || document;
        var scriptTags = doc.getElementsByTagName('script')
        for (var i=scriptTags.length; i>=0; i--){
            if (scriptTags[i] && scriptTags[i].getAttribute('src') != null
                && scriptTags[i].getAttribute(targetattr).indexOf(sUrl)!=-1) {
                scriptTags[i].parentNode.removeChild(scriptTags[i])
            }
        }
    },
    //*******************************************************
    // 动态加载css文件
    //*******************************************************
    loadCssFile: function(sUrl, doc) {
        doc = doc || document;
        var fileref = doc.createElement("link");
        fileref.setAttribute("rel", "stylesheet");
        fileref.setAttribute("type", "text/css");
        fileref.setAttribute("href", sUrl);
        doc.getElementsByTagName("head")[0].appendChild(fileref);
    },
    //*******************************************************
    // 将header中的css文件删除
    //*******************************************************
    removeCssFile: function(sUrl, doc) {
        doc = doc || document;
        var linkTags = doc.getElementsByTagName('link')
        for (var i=linkTags.length; i>=0; i--){
            if (linkTags[i] && linkTags[i].getAttribute('href') != null
                && linkTags[i].getAttribute(targetattr).indexOf(sUrl)!=-1) {
                linkTags[i].parentNode.removeChild(linkTags[i])
            }
        }
    }
}

用 PHP 判断客户端 Cookie 是否有效

,

刚开始以为很简单,只要判断 $_COOKIE 是否为空就行了,结果不行。
如果客户端起初设置 Cookie 有效,中途删除 Cookie 后再提交请求,以上方法就会导致误判。

正确的做法是分两步,$_COOKIE 为空的情况下,在URL上加一个参数,再次提交提交请求(用redirect实现),
如果 $_COOKIE 还是为空,那就可以判定客户端 Cookie 无效。

示例代码如下:
<?php
setcookie('test', 1, time()+3600);
if(empty($_COOKIE)){
    if(isset($_GET['chk_cookie'])) {
        echo "客户端 Cookie 无效";
    } else {
        $testUri = $_SERVER['REQUEST_URI'];
        $testUri .= ((strpos($testUri, '?') === false) ? '?' : '&') .'chk_cookie=1';
        header('Location:'.$testUri);
    }
} else {
    echo "客户端 Cookie 有效";
}

CentOS 时区设置

, ,

第一步
cp /usr/share/zoneinfo/{时区名} /etc/localtime

第二步
vi /etc/sysconfig/clock
ZONE="{时区名}"
UTC=true
ARC=false


第三步
yum install ntp
ntpdate us.pool.ntp.org


例1)日本东京
cp /usr/share/zoneinfo/Japan /etc/localtime
vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"


例2)中国上海
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
vi /etc/sysconfig/clock
ZONE="Asia/Shanghai"

HTML5 的 br 标签写法

根据以前的经验,br 标签写法如下
HTML: <br>
XHTML: <br />
现已经入 HTML5 时代,突然想知道什么是标准写法。

还好 StackOverflow 上有答案
根据被采纳的回答,HTML5 只要写
<br>
就行了,没必要加斜杠。 当然,加上斜杠也不碍事,不过没必要。

似乎,简洁至上是HTML5的原则之一。

Linux 日文编码转换命令 nkf 用法

, ,

基本命令格式:
$ nkf 参数 文件名 [> 输出文件名]

通过管道使用(例):
$ cat 文件名 | nkf 参数 [> 输出文件名]

常用参数:
-j           : 转换为 JIS 编码(ISO-2022-JP),默认
-e           : 转换为 EUC 编码
-s           : 转换为 Shift-JIS 编码
-w           : 转换为 UTF-8 编码(无BOM)
-Lu          : 转换为 unix 换行格式(LF)
-Lw          : 转换为 windows 换行格式(CRLF)
-Lm          : 转换为 macintosh 换行格式(CR)
-g(--guess)  : 自动判断编码并显示
--version    : 显示版本
--help       : 显示帮助

mysql 数据库备份脚本

,

以下脚本用于本机 mysql 数据库的备份。每个数据库保存一周的7个备份。
#!/bin/bash

# 备份路径
BACKDIR=/var/backup/mysql
mkdir -p $BACKDIR

# MySQL的root用户密码
ROOTPASS=password

# 取得数据库名列表
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`

# 取得星期几
WEEKDAY=`date +'%w'`

# 对各数据库进行备份
for dbname in $DBLIST
do
    [ $dbname = "mysql" ] && continue
    mysqldump -u root -p$ROOTPASS $dbname | gzip > $BACKDIR/$dbname.sql.$WEEKDAY.gz
done

grep 的复合条件检索

, ,

单个条件的 grep 检索命令很简单:

grep pattern1 textfile

以上命令也是最常用的形式。

复合条件的检索就不那么简单,因此有必要整理一下。

● AND条件
grep pattern1 textfile | grep pattern2

● OR条件
grep "pattern1\|pattern2" textfile
grep -e pattern1 -e pattern2 textfile

● 除外(AND)
grep -v "pattern1\|pattern2" textfile

● 常用参数
-i 不区分大小写
-l 只列出符合条件的文件名
-n 显示行号
-v 列出不符合条件的行 
--color 给符合条件的关键字加颜色
-o 只显示符合条件的关键字
-r 在指定目录下递归检索

用 jQuery 写代码的几种固定模式

,

1. 基本模式
$(document).ready(function(){
    // 自己的代码
});


2. 常用模式
$(function(){
    // 自己的代码
});


3. 和其他框架共用模式
jQuery(document).ready(function($){
    // 自己的代码
});


4. 2和3的组合模式
jQuery(function($){
    // 自己的代码
});



参考: http://5509.me/log/jquery-execution-pattern

用 jQuery 做简单的弹出对话框

,

用 jQuery 做一个简单的弹出对话框 用 jQuery 做了一个简单的弹出对话框,可用于智能手机。
// 让元素居中的函数
jQuery.fn.center = function () {
    $win = $(window);
    this.css('position','absolute');
    this.css('top', (($win.height() - this.outerHeight()) / 2) + $win.scrollTop() + 'px');
    this.css('left', (($win.width() - this.outerWidth()) / 2) + $win.scrollLeft() + 'px');
    return this;
}

// 弹出对话框函数
jQuery.msgBox = function(sMsg, sTitle, sButton) {
    sMsg = sMsg || '';
    sTitle = sTitle || '消息';
    sButton = sButton || '关闭';
    $alertBox = $('<div>').css({
        'position': 'absolute',
        'top': '0',
        'left': '0',
        'width': '300px',
        'height': '150px',
        'border-radius': '5px',
        'padding': '2px',
        'background': '#000',
        'color': '#FFF',
        'opacity': '0.8',
        'z-index': '999',
        'text-align': 'center'
    }).append('<div style="background:#333;border-radius:3px;padding:2px;margin:4px;font-size:90%;">' + sTitle + '</div>')
        .append('<div style="height:70px;margin:8px;2px;text-align:left;">' + sMsg + '</div>')
        .append($('<button style="padding:3px;">' + sButton + '</button>').click(function(e) {
            $alertBox.remove();
        })
    ).prependTo(document.body).center().show();
};

//测试(示例)
$('#test').click(function(){
    $.msgBox('Hello world!');
});

解决 Android 浏览器页面内跳转问题

, ,

Android 的浏览器(可能仅限于某些版本),如果URL本身带有 #top 这样的字符串,页面内的跳转(anchor)将不起作用。
为此,用 javascript 解决如下:
$("a[href^=#]").click(function(e) {
    //if(window.location.href.indexOf('#') == -1) return true;  // 仅对应 URL 带 # 的情况
    e.preventDefault();
    var sAnchor = $(this).attr('href').replace('#', '');
    var $target = $('a[name=' + sAnchor + ']').next();
    var nTop = ($target.length > 0) ? $target.offset().top : 0;
    $(window).scrollTop(nTop);
    // 若需动画效果
    //$(document.body).animate({ scrollTop: nTop }, 'slow');
    return false;
});

注:以上代码基于 jQuery。
February 2012
S M T W T F S
January 2012March 2012
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29