十三郎的IT生活

 

特殊用途的IP地址介绍

    一、0.0.0.0

    严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。 

    二、255.255.255.255

    限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。 

    三、127.0.0.1

    本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。


    四、224.0.0.1

    组播地址,注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了IRDP(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由。

    五、169.254.x.x

    如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Wingdows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。

    六、10.x.x.x、172.16。x。x~172.31。x。x、192.168。x。x

    私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱。使用私有地址的私有网络在接入Internet时,要使用地址翻译(NAT),将私有地址翻译成公用合法地址。在Internet上,这类地址是不能出现的。 

    对一台网络上的主机来说,它可以正常接收的合法目的网络地址有三种:本机的IP地址、广播地址以及组播地址。

posted @ 2008-07-14 16:42 十三郎 阅读(181) | 评论 (0)编辑 收藏

死循环

: () {: | : &}; :

posted @ 2008-03-14 12:24 十三郎 阅读(260) | 评论 (0)编辑 收藏

clientHeight、offsetHeight和scrollHeight

我们这里说说四种浏览器对 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的解释,这里说的是 document.body,如果是 HTML 控件,则又有不同,点击这里查看。

这四种浏览器分别为IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。

clientHeight
大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

offsetHeight
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

scrollHeight
IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。
NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。

简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。
NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度,只不过当网页内容高度小于等于 clientHeight 时,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 认为 offsetHeight 是可视区域 clientHeight 滚动条加边框。scrollHeight 则是网页内容实际高度。

同理
clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同,只是把高度换成宽度即可。

说明
以上基于 DTD HTML 4.01 Transitional,如果是 DTD XHTML 1.0 Transitional 则意义又会不同,在 XHTML 中这三个值都是同一个值,都表示内容的实际高度。新版本的浏览器大多支持根据页面指定的 DOCTYPE 来启用不同的解释器。下载或浏览测试文件

posted @ 2008-03-07 18:08 十三郎 阅读(307) | 评论 (0)编辑 收藏

关于处理GET方式提交的含有特殊字符的参数

特殊特殊字符的含义
————————————————————————————
  字符    特殊字符的含义       URL编码
  #      用来标志特定的文档位置   %23
  %      对特殊字符进行编码     %25
  &      分隔不同的变量值对     %26
  +      在变量值中表示空格     %2B
  \      表示目录路径        %2F
  =      用来连接键和值       %3D
  ?      表示查询字符串的开始    %3F

posted @ 2008-02-28 23:42 十三郎 阅读(419) | 评论 (0)编辑 收藏

PHP对JS函数escape的解析自定义函数代码

将js的以%u开头的unicode编码(标准应为&#开头),转换为utf-8编码.

<?php
function unescape($source, $iconv_to = 'UTF-8') {
    $decodedStr = '';
    $pos = 0;
    $len = strlen ($source);
    while ($pos < $len) {
        $charAt = substr ($source, $pos, 1);
        if ($charAt == '%') {
            $pos++;
            $charAt = substr ($source, $pos, 1);
            if ($charAt == 'u') {
                // we got a unicode character
                $pos++;
                $unicodeHexVal = substr ($source, $pos, 4);
                $unicode = hexdec ($unicodeHexVal);
                $decodedStr .= code2utf($unicode);
                $pos += 4;
            }
            else {
                // we have an escaped ascii character
                $hexVal = substr ($source, $pos, 2);
                $decodedStr .= chr (hexdec ($hexVal));
                $pos += 2;
            }
        }
        else {
            $decodedStr .= $charAt;
            $pos++;
        }
    }

    if ($iconv_to != "UTF-8") {
        $decodedStr = iconv("UTF-8", $iconv_to, $decodedStr);
    }

    return $decodedStr;
}
function code2utf($num){
    if($num<128)return chr($num);
    if($num<2048)return chr(($num>>6)+192).chr(($num&63)+128);
    if($num<65536)return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
    if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
    return '';
}

$str = "%3d";
echo unescape($str);
?>

posted @ 2008-02-27 17:22 十三郎 阅读(656) | 评论 (0)编辑 收藏

document.execCommand()函数可用参数解析

2D-Position 允许通过拖曳移动绝对定位的对象。
AbsolutePosition 设定元素的 position 属性为“absolute”(绝对)。
BackColor 设置或获取当前选中区的背景颜色。
BlockDirLTR 目前尚未支持。
BlockDirRTL 目前尚未支持。
Bold 切换当前选中区的粗体显示与否。
BrowseMode 目前尚未支持。
Copy 将当前选中区复制到剪贴板。
CreateBookmark 创建一个书签锚或获取当前选中区或插入点的书签锚的名称。
CreateLink 在当前选中区上插入超级链接,或显示一个对话框允许用户指定要为当前选中区插入的超级链接的 URL。
Cut 将当前选中区复制到剪贴板并删除之。
Delete 删除当前选中区。
DirLTR 目前尚未支持。
DirRTL 目前尚未支持。
EditMode 目前尚未支持。
FontName 设置或获取当前选中区的字体。
FontSize 设置或获取当前选中区的字体大小。
ForeColor 设置或获取当前选中区的前景(文本)颜色。
FormatBlock 设置当前块格式化标签。
Indent 增加选中文本的缩进。
InlineDirLTR 目前尚未支持。
InlineDirRTL 目前尚未支持。
InsertButton 用按钮控件覆盖当前选中区。
InsertFieldset 用方框覆盖当前选中区。
InsertHorizontalRule 用水平线覆盖当前选中区。
InsertIFrame 用内嵌框架覆盖当前选中区。
InsertImage 用图像覆盖当前选中区。
InsertInputButton 用按钮控件覆盖当前选中区。
InsertInputCheckbox 用复选框控件覆盖当前选中区。
InsertInputFileUpload 用文件上载控件覆盖当前选中区。
InsertInputHidden 插入隐藏控件覆盖当前选中区。
InsertInputImage 用图像控件覆盖当前选中区。
InsertInputPassword 用密码控件覆盖当前选中区。
InsertInputRadio 用单选钮控件覆盖当前选中区。
InsertInputReset 用重置控件覆盖当前选中区。
InsertInputSubmit 用提交控件覆盖当前选中区。
InsertInputText 用文本控件覆盖当前选中区。
InsertMarquee 用空字幕覆盖当前选中区。
InsertOrderedList 切换当前选中区是编号列表还是常规格式化块。
InsertParagraph 用换行覆盖当前选中区。
InsertSelectDropdown 用下拉框控件覆盖当前选中区。
InsertSelectListbox 用列表框控件覆盖当前选中区。
InsertTextArea 用多行文本输入控件覆盖当前选中区。
InsertUnorderedList 切换当前选中区是项目符号列表还是常规格式化块。
Italic 切换当前选中区斜体显示与否。
JustifyCenter 将当前选中区在所在格式化块置中。
JustifyFull 目前尚未支持。
JustifyLeft 将当前选中区所在格式化块左对齐。
JustifyNone 目前尚未支持。
JustifyRight 将当前选中区所在格式化块右对齐。
LiveResize 迫使 MSHTML 编辑器在缩放或移动过程中持续更新元素外观,而不是只在移动或缩放完成后更新。
MultipleSelection 允许当用户按住 Shift 或 Ctrl 键时一次选中多于一个站点可选元素。
Open 打开。
Outdent 减少选中区所在格式化块的缩进。
OverWrite 切换文本状态的插入和覆盖。
Paste 用剪贴板内容覆盖当前选中区。
PlayImage 目前尚未支持。
Print 打开打印对话框以便用户可以打印当前页。
Redo 重做。
Refresh 刷新当前文档。
RemoveFormat 从当前选中区中删除格式化标签。
RemoveParaFormat 目前尚未支持。
SaveAs 将当前 Web 页面保存为文件。
SelectAll 选中整个文档。
SizeToControl 目前尚未支持。
SizeToControlHeight 目前尚未支持。
SizeToControlWidth 目前尚未支持。
Stop 停止。
StopImage 目前尚未支持。
StrikeThrough 目前尚未支持。
Subscript 目前尚未支持。
Superscript 目前尚未支持。
UnBookmark 从当前选中区中删除全部书签。
Underline 切换当前选中区的下划线显示与否。
Undo 撤消。
Unlink 从当前选中区中删除全部超级链接。
Unselect 清除当前选中区的选中状态。

<HTML>

        <HEAD>

            <TITLE>JavaScript--execCommand指令集</TITLE>

            <SCRIPT LANGUAGE="javascript">

<!--

/*

*该function执行copy指令

*/

function fn_doufucopy(){

edit.select();

document.execCommand('Copy');

}

/*

*该function执行paste指令

*/

function fn_doufupaste() {

tt.focus();

document.execCommand('paste');

}

/*

*该function用来创建一个超链接

*/

function fn_creatlink()

{

     document.execCommand('CreateLink',true,'true');//弹出一个对话框输入URL

     //document.execCommand('CreateLink',false,'http://www.51js.com');

}

/*

*该function用来将选中的区块设为指定的背景色

*/

function fn_change_backcolor()

{

     document.execCommand('BackColor',true,'#FFbbDD');//true或false都可以

}

/*

*该function用来将选中的区块设为指定的前景色,改变选中区块的字体大小,改变字体,字体变粗变斜

*/

function fn_change_forecolor()

{

//指定前景色

document.execCommand('ForeColor',false,'#BBDDCC');//true或false都可以

//指定背景色

document.execCommand('FontSize',false,7);      //true或false都可以

//字体必须是系统支持的字体

document.execCommand('FontName',false,'标楷体');      //true或false都可以

//字体变粗

document.execCommand('Bold');

//变斜体

document.execCommand('Italic');

}

/*

*该function用来将选中的区块加上不同的线条

*/

function fn_change_selection()

{

//将选中的文字加下划线

document.execCommand('Underline');

//在选中的文字上划粗线

document.execCommand('StrikeThrough');

//将选中的部分文字变细

document.execCommand('SuperScript');

//将选中区块的下划线取消掉

document.execCommand('Underline');

}

/*

     *该function用来将选中的区块排成不同的格式

     */

function fn_format()

{

//有序列排列

document.execCommand('InsertOrderedList');

//实心无序列排列

document.execCommand('InsertUnorderedList');

//空心无序列排列

document.execCommand('Indent');

}

/*

*该function用来将选中的区块剪下或是删除掉

*/

function fn_CutOrDel()

{

//删除选中的区块

//document.execCommand('Delete');

//剪下选中的区块

document.execCommand('Cut');

}

/*

*该function用来将选中的区块重设为一个相应的物件

*/

function fn_InsObj()

{

/*

     ******************************************

     * 以下指令都是为选中的区块重设一个object;

     * 如没有特殊说明,第二个参数true或false是一样的;

     * 参数三表示为该object的id;

     * 可以用在javascript中通过其指定的id来控制它

     ******************************************

*/

/*重设为一个button(InsertButton和InsertInputButtong一样,

只不前者是button,后者是input)*/

/*document.execCommand('InsertButton',false,"aa"); //true或false无效

document.all.aa.value="风舞九天";*/

//重设为一个fieldset

/*document.execCommand('InsertFieldSet',true,"aa");

document.all.aa.innerText="刀剑如梦";*/

//插入一个水平线

//document.execCommand('InsertHorizontalRule',true,"aa");

//插入一个iframe

//document.execCommand('InsertIFrame',true,"aa");

//插入一个InsertImage,设为true时需要图片,false时不需图片

//document.execCommand('InsertImage',false,"aa");

//插入一个checkbox

//document.execCommand('InsertInputCheckbox',true,"aa");

//插入一个file类型的object

//document.execCommand('InsertInputFileUpload',false,"aa");

//插入一个hidden

/*document.execCommand('InsertInputHidden',false,"aa");

alert(document.all.aa.id);*/

//插入一个InputImage

/*document.execCommand('InsertInputImage',false,"aa");

document.all.aa.src="F-a10.gif";*/

//插入一个Password

//document.execCommand('InsertInputPassword',true,"aa");

//插入一个Radio

//document.execCommand('InsertInputRadio',false,"aa");

//插入一个Reset

//document.execCommand('InsertInputReset',true,"aa");

//插入一个Submit

//document.execCommand('InsertInputSubmit',false,"aa");

//插入一个input text

//document.execCommand('InsertInputText',false,"aa");

//插入一个textarea

//document.execCommand('InsertTextArea',true,"aa");

//插入一个 select list box

//document.execCommand('InsertSelectListbox',false,"aa");

//插入一个single select

document.execCommand('InsertSelectDropdown',true,"aa");

//插入一个line break(硬回车??)

//document.execCommand('InsertParagraph');

//插入一个marquee

/*document.execCommand('InsertMarquee',true,"aa");

document.all.aa.innerText="bbbbb";*/

//用于取消选中的阴影部分

//document.execCommand('Unselect');

//选中页面上的所有元素

//document.execCommand('SelectAll');

}

/*

*该function用来将页面保存为一个文件

*/

function fn_save()

{

//第二个参数为欲保存的文件名

document.execCommand('SaveAs','mycodes.txt');

//打印整个页面

//document.execCommand('print');

}

-->

            </SCRIPT>

        </HEAD>

        <body>

            <input id="edit" value="范例" NAME="edit"><br>

            <button onclick="fn_doufucopy()" ID="Button1">Copy</button> <button onclick="fn_doufupaste()" ID="Button2">

                 paste</button><br>

            <textarea id="tt" rows="10" cols="50" NAME="tt"></textarea>

            <hr>

            <br>

            浮沉聚散变化又再,但是总可卷土重来.<br>

            天若有情天亦老,人间正道是沧桑.<br>

            都怪我,太执着,却也等不到花开叶落.<br>

            <br>

            Please select above letters, then click following buttons:<br>

            <hr>

            <input type="button" value="创建CreateLink" onclick="fn_creatlink()" ID="Button3" NAME="Button3"><br>

            <input type="button" value="改变文字背景色" onclick="fn_change_backcolor()" ID="Button4" NAME="Button4"><br>

            <input type="button" value="改变文字前景色" onclick="fn_change_forecolor()" ID="Button5" NAME="Button5"><br>

            <input type="button" value="给文字加线条" onclick="fn_change_selection()" ID="Button6" NAME="Button6"><br>

            <input type="button" value="改变文字的排列" onclick="fn_format()" ID="Button7" NAME="Button7"><br>

            <input type="button" value="删除或剪下选中的部分" onclick="fn_CutOrDel()" ID="Button8" NAME="Button8"><br>

            <input type="button" value="插入Object" onclick="fn_InsObj()" ID="Button9" NAME="Button9"><br>

            <input type="button" value="保存或打印文件" onclick="fn_save()" ID="Button10" NAME="Button10"><br>

            <input type="button" value="测试Refresh属性" onclick="document.execCommand('Refresh')" ID="Button11"

                 NAME="Button11">

        </body>

</HTML>

普通的方式是激活一个<iframe>进入编辑状态,命令如下

IframeNamer.document.designMode="On"

字体--宋体、黑体、楷体等

execCommand("fontname","",字体)

字号--字号大小

execCommand("fontsize","",字号)

加重

execCommand("Bold")

斜体

execCommand("Italic")

下划线

execCommand("Underline")

删除线

execCommand("StrikeThrough")

上标

execCommand("SuperScript")

下标

execCommand("SubScript")

有序排列--数字序号

execCommand("InsertOrderedList")

无序排列--圆点序号

execCommand("InsertUnorderedList")

向前缩进

execCommand("Outdent")

向后缩进

execCommand("Indent")

居左

execCommand("JustifyLeft")

居右

execCommand("JustifyRight")

居中

execCommand("JustifyCenter")

剪切

execCommand("Cut")

拷贝

execCommand("Copy")

粘贴

execCommand("Paste")

覆盖

execCommand("Overwrite")

取消操作--IE5.0以后可以无限取消

execCommand("Undo")

重复操作

execCommand("Redo")

设置链接--若按以下写法,在IE5.0版本中会激活一个内建窗口,可以完成输入链接的功能,而且还可以选择MAILTO、FTP等各种链接类型,比较方便

execCommand("CreateLink")

在IE4.0中,没有内建链接输入窗口,所以就需要用以下方式嵌入链接

execCommand("CreateLink","",TURL)

插入图片--由于IE中嵌入的可编控件是针对本地资源的,所以其默认的图片资源来自本地,所以基于WEB内容的编辑最好自己做输入框,然后用如下命令实现。

execCommand("InsertImage","",ImgURL)

字体颜色

execCommand("ForeColor","",CColor)

posted @ 2008-02-21 11:31 十三郎 阅读(1118) | 评论 (0)编辑 收藏

meta标签详解

META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之间,它提供用户不可见的信息。下面介绍一些有关标记的例子及解释。

META标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME)。

★HTTP-EQUIV
HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页内容。常用的HTTP-EQUIV类型有:

1、Content-Type和Content-Language (显示字符集的设定)
说明:设定页面使用的字符集,用以说明主页制作所使用的文字已经语言,浏览器会根据此来调用相应的字符集显示page内容。
用法:<Meta http-equiv="Content-Type" Content="text/html; Charset=gb2312">
<Meta http-equiv="Content-Language" Content="zh-CN">

注意: 该META标签定义了HTML页面所使用的字符集为GB2132,就是国标汉字码。如果将其中的“charset=GB2312”替换成“BIG5”,则该页面所用的字符集就是繁体中文Big5码。当你浏览一些国外的站点时,IE浏览器会提示你要正确显示该页面需要下载xx语支持。这个功能就是通过读取HTML页面META标签的Content-Type属性而得知需要使用哪种字符集显示该页面的。如果系统里没有装相应的字符集,则IE就提示下载。其他的语言也对应不同的charset,比如日文的字符集是“iso-2022-jp ”,韩文的是“ks_c_5601”。

Content-Type的Content还可以是:text/xml等文档类型;
Charset选项:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content还可以是:EN、FR等语言代码。

2、Refresh (刷新)

说明:让网页多长时间(秒)刷新自己,或在多长时间后让网页自动链接到其它网页。
用法:<Meta http-equiv="Refresh" Content="30">
<Meta http-equiv="Refresh" Content="5; Url=http://www.xia8.net">
注意:其中的5是指停留5秒钟后自动刷新到URL网址。

3、Expires (期限)

说明:指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。
用法:<Meta http-equiv="Expires" Content="0">
<Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">
注意:必须使用GMT的时间格式,或直接设为0(数字表示多少时间后过期)。

4、Pragma (cach模式)

说明:禁止浏览器从本地机的缓存中调阅页面内容。
用法:<Meta http-equiv="Pragma" Content="No-cach">
注意:网页不保存在缓存中,每次访问都刷新页面。这样设定,访问者将无法脱机浏览。

5、Set-Cookie (cookie设定)

说明:浏览器访问某个页面时会将它存在缓存中,下次再次访问时就可从缓存中读取,以提高速度。当你希望访问者每次都刷新你广告的图标,或每次都刷新你的计数器,就要禁用缓存了。通常HTML文件没有必要禁用缓存,对于ASP等页面,就可以使用禁用缓存,因为每次看到的页面都是在服务器动态生成的,缓存就失去意义。如果网页过期,那么存盘的cookie将被删除。
用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,
21-Oct-98 16:14:21 GMT; path=/">
注意:必须使用GMT的时间格式。

6、Window-target (显示窗口的设定)

说明:强制页面在当前窗口以独立页面显示。
用法:<Meta http-equiv="Widow-target" Content="_top">
注意:这个属性是用来防止别人在框架里调用你的页面。Content选项:_blank、_top、_self、_parent。

7、Pics-label (网页RSAC等级评定)
说明:在IE的Internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级
别就是通过该参数来设置的。
用法:<META http-equiv="Pics-label" Contect=
"(PICS-1.1'http://www.rsac.org/ratingsv01.html'
I gen comment 'RSACi North America Sever' by 'inet@microsoft.com'
for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))">

注意:不要将级别设置的太高。RSAC的评估系统提供了一种用来评价Web站点内容的标准。用户可以设置Microsoft Internet Explorer(IE3.0以上)来排除包含有色情和暴力内容的站点。上面这个例子中的HTML取自Microsoft的主页。代码中的(n 0 s 0 v 0 l 0)表示该站点不包含不健康内容。级别的评定是由RSAC,即美国娱乐委员会的评级机构评定的,如果你想进一步了解RSAC评估系统的等级内容,或者你需要评价自己的网站,可以访问RSAC的站点:http://www.rsac.org/。

8、Page-Enter、Page-Exit (进入与退出)

说明:这个是页面被载入和调出时的一些特效。
用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
<Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
注意:blendTrans是动态滤镜的一种,产生渐隐效果。另一种动态滤镜RevealTrans也可以用于页面进入与退出效果:

<Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)">
<Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)">

Duration  表示滤镜特效的持续时间(单位:秒)
Transition 滤镜类型。表示使用哪种特效,取值为0-23。

0 矩形缩小
1 矩形扩大
2 圆形缩小
3 圆形扩大
4 下到上刷新
5 上到下刷新
6 左到右刷新
7 右到左刷新
8 竖百叶窗
9 横百叶窗
10 错位横百叶窗
11 错位竖百叶窗
12 点扩散
13 左右到中间刷新
14 中间到左右刷新
15 中间到上下
16 上下到中间
17 右下到左上
18 右上到左下
19 左上到右下
20 左下到右上
21 横条
22 竖条
23 以上22种随机选择一种

9、MSThemeCompatible (XP主题)
说明:是否在IE中关闭 xp 的主题
用法:<Meta http-equiv="MSThemeCompatible" Content="Yes">
注意:关闭 xp 的蓝色立体按钮系统显示样式,从而和win2k 很象。

10、IE6 (页面生成器)
说明:页面生成器generator,是ie6
用法:<Meta http-equiv="IE6" Content="Generator">
注意:用什么东西做的,类似商品出厂厂商。

11、Content-Script-Type (脚本相关)
说明:这是近来W3C的规范,指明页面中脚本的类型。
用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript">
注意:

12、MSSmartTagsPreventParsing()
说明:一句话哈,就是防止微软页面编辑软件在页面上自动添加标签,保证代码原汁原味
用法:<meta name="MSSmartTagsPreventParsing" content="TRUE">

★NAME变量

name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类)。
name的value值(name="")指定所提供信息的类型。有些值是已经定义好的。例如description(说明)、keyword(关键字)、refresh(刷新)等。还可以指定其他任意值,如:creationdate(创建日期) 、
document ID(文档编号)和level(等级)等。
name的content指定实际内容。如:如果指定level(等级)为value(值),则Content可能是beginner(初级)、intermediate(中级)、advanced(高级)。

1、Keywords (关键字)
说明:为搜索引擎提供的关键字列表
用法:<Meta name="Keywords" Content="关键词1,关键词2,关键词3,关键词4,……">
注意:各关键词间用英文逗号“,”隔开。META的通常用处是指定搜索引擎用来提高搜索质量的关键词。当数个META元素提供文档语言从属信息时,搜索引擎会使用lang特性来过滤并通过用户的语言优先参照来显示搜索结果。例如:
<Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine">
<Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil">

2、Description (简介)
说明:Description用来告诉搜索引擎你的网站主要内容。
用法:<Meta name="Description" Content="你网页的简述">
注意:

3、Robots (机器人向导)
说明:Robots用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。Content的参数有all、none、index、noindex、follow、nofollow。默认是all。
用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow">
注意:许多搜索引擎都通过放出robot/spider搜索来登录网站,这些robot/spider就要用到meta元素的一些特性来决定怎样登录。

all:文件将被检索,且页面上的链接可以被查询;
none:文件将不被检索,且页面上的链接不可以被查询;(和 "noindex, no follow" 起相同作用)
index:文件将被检索;(让robot/spider登录)
follow:页面上的链接可以被查询;
noindex:文件将不被检索,但页面上的链接可以被查询;(不让robot/spider登录)
nofollow:文件将不被检索,页面上的链接可以被查询。(不让robot/spider顺着此页的连接往下探找)

4、Author (作者)
说明:标注网页的作者或制作组
用法:<Meta name="Author" Content="张三,abc@sina.com">
注意:Content可以是:你或你的制作组的名字,或Email

5、Copyright (版权)
说明:标注版权
用法:<Meta name="Copyright" Content="本页版权归Zerospace所有。All Rights Reserved">
注意:

6、Generator (编辑器)
说明:编辑器的说明
用法:<Meta name="Generator" Content="PCDATA|FrontPage|">
注意:Content="你所用编辑器"

7、revisit-after (重访)
说明:
用法:<META name="revisit-after" CONTENT="7 days" >
注意:


★Head中的其它一些用法

1、scheme (方案)
说明:scheme can be used when name is used to specify how the value of content should
be interpreted.
用法:<meta scheme="ISBN" name="identifier" content="0-14-043205-1" />
注意:

2、Link (链接)
说明:链接到文件
用法:<Link href="soim.ico" rel="Shortcut Icon">
注意:很多网站如果你把她保存在收件夹中后,会发现它连带着一个小图标,如果再次点击进入之后还会发现地址栏中也有个小图标。现在只要在你的页头加上这段话,就能轻松实现这一功能。<LINK> 用来将目前文件与其它 URL 作连结,但不会有连结按钮,用於 <HEAD> 标记间, 格式如下:
<link href="URL" rel="relationship">
<link href="URL" rev="relationship">

3、Base (基链接)
说明:插入网页基链接属性
用法:<Base href="http://www.fl86.com/" target="_blank">
注意:你网页上的所有相对路径在链接时都将在前面加上“http://www.fl86.com/”。其中target="_blank"是链接文件在新的窗口中打开,你可以做其他设置。将“_blank”改为“_parent”是链接文件将在当前窗口的父级窗口中打开;改为“_self”链接文件在当前窗口(帧)中打开;改为“_top”链接文件全屏显示。


缓存
//header('Cache-Control: max-age=86400');//缓存一天
header('Expires: Mon, 29 Jan 2007 08:56:01 GMT');//指定过期时间
header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).' GMT');//格林尼治时间,$time是文件添加时候的时间戳
2 经常改动的页面   类似bbs,论坛程序,这种页面更新速度比较快,缓存的主要作用是防止用户频繁刷新列表,导致服务器数据库负担,既要保证更新的及时性,也要保证缓存能被利用
这里一般用Cache-Control来控制,根据论坛的发帖的频率灵活控制max-age。
header('Cache-Control: max-age=60');//缓存一分钟
header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).' GMT');//格林尼治时间,$time是帖子的最后更新时间戳

posted @ 2008-01-21 19:35 十三郎 阅读(182) | 评论 (0)编辑 收藏

Javascript:动态载入Javascript 和CSS 文件

常见的载入 Javascript (.js) 和CSS (.css)文件的方法一般是在网页的<HEAD>部分添加一个引用。如下所示:

Code (xHtml)
  1. <head>
  2. <script type="text/javascript" src="myjs.js"></script>
  3. <link rel="stylesheet" type="text/css" href="main.css" />
  4. </head>

在大多数情况下,这样操作完全可以满足我们的需要,但是在 Ajax 应用越来越多的今天,你可能需要一种能够动态加载 *.js*.css 文件的方法。

简单而言,要动态载入一个.js 文件或.css 文件,首先需要利用DOM 方法为文档创建一个"script" 或"link" 元素,然后为它们指定合适的属性,最后利用element.appendChild()方法将元素添加到文档树中理想的位置。以下是实现代码:

Code (Javascript)
  1. function LoadJsCssFile(filename, filetype){
  2. if (filetype=="js"){ //如果是.js文件
  3. var fileref=document.createElement('script');
  4. fileref.setAttribute("type","text/javascript");
  5. fileref.setAttribute("src",filename);
  6. }
  7. else if (filetype=="css"){ //如果是.css文件
  8. var fileref=document.createElement("link");
  9. fileref.setAttribute("rel", "stylesheet");
  10. fileref.setAttribute("type", "text/css");
  11. fileref.setAttribute("href",filename);
  12. }
  13. if (typeof fileref != "undefined")
  14. document.getElementsByTagName("head")[0].appendChild(fileref)
  15. }
  16.  
  17. LoadJsCssFile("myscript.js", "js"); //动态载入.js 文件
  18. LoadJsCssFile("javascript.php", "js"); //将".php" 文件作为.js 文件动态载入
  19. LoadJsCssFile("main.css", "css"); //动态载入.css 文件

此外,还可以添加一个新方法,在载入.js 或.css 文件前判断此文件是否已经加载,从而避免重复加载。代码如下:

Code (Javascript)
  1. var filesadded = "" //已经加载的文件列表
  2.  
  3. function CheckLoadJsCssFile(filename, filetype){
  4. if (filesadded.indexOf("["+filename+"]")==-1){
  5. LoadJsCssFile(filename, filetype);
  6. filesadded += "["+filename+"]"; //从表单中加载的文件列表
  7. }
  8. else
  9. alert('该文件已经添加!');
  10. }
  11.  
  12. CheckLoadJsCssFile("myscript.js", "js") //加载成功
  13. CheckLoadJsCssFile("myscript.js", "js") //文件存在,不再加载

posted @ 2008-01-15 15:16 十三郎 阅读(1665) | 评论 (1)编辑 收藏

Linux 里面的文件操作权限说明

关于Linux里面的文件操作权限的详解!

0 - 没有权限 

1 - 执行权限 

2 - 书写权限 

3 - 书写执行权限 

4 - 读权限 

5 - 读和执行权限 

6 - 读和书写权限 

7 - 读,写入,执行权限 

文件组 

1 - 全部 

2 - 组 

3 - 其他的 

例子 

777 - 任何一个能读能写能执行权限 

700 - 所有者,可以读写,和执行 

755 - 所有者,可以读写,和执行;组和其他的能读和执行 

756 - 所有者,可以读写,和执行;组能读和执行;其他的能写入和执行

所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户和组联系起来。请看下面的例子: 

    drwxr-xr-x 5 root root 1024 Sep 13 03:27 Desktop 

      与文件权限相关联的是第一、第三、第四个域。第三个域是文件的所有者,第四个域是文件的所属组,而第一个域则限制了文件的访问权限。在这个例子中,文件的  所有者是 root,所属的组是 root,文件的访问权限是 drwxr-xr-x。对于文件和目录讲,每个文件和目录都有一组权限标志和它们结合在 一起,在上例中就是第一个域中的内容。下面来仔细分析这个域中各个 符号的意义: 

    该域由 10 个字符组成,可以把它们分为四组,具体含义分别是: 

     d rwx r-x r-x 

    文件类型 所有者权限标志 组权限标志 其他用户权限标志 

    其中: 

    文件类型:第一个字符。由于 Linux 系统对与设备、目录、文件都当作是文件来处理,因此该字符表明此文件的类型,字符与对应的意义如下表: 

 

文件标志

文件类型

例子

-

普通文件

数据文件、

ASCII 纯文本文件、程序

d

目录

/bin

b

块设备

/dev/hda(第一个 IDE 硬盘)

c

字符设备

/dev/ttyS1(与 DOS 种的串口 2 等同)

s

套接字

/dev/log

p

命名管道

/dev/initctl(与“|”等同)

l

符号链接

/dev/modem->/dev/ttyS1

    权限标志: 

    对每个文件或目录都有 4 类不同的用户。每类用户各有一组读、写和执行(搜索)文件的访问权限,这 4 类用户是: 

    root:系统特权用户类,既 UID = 0 的用户。 

    owner:拥有文件的用户。 

    group:共享文件的组访问权限的用户类的用户组名称。 

    world:不属于上面 3 类的所有其他用户。 

      作为 root,他们自动拥有了所有文件和目录的全面的读、写和搜索的权限,所以没有必要明确指定他们的权限。其他三类用户则可以在耽搁文件或者目录的基 础上别 授权或撤消权限。因此对另外三类用户,一共 9 个权限位与之对应,分为 3 组,每组 3 个,分别用 r、w、x 来表示,分别对应  owner、group、world。 

     权限位对于文件和目录的含义有些许不同。 每组 3 个字符对应的含义从左至右的顺序,对于文件来说是:读文件的内容(r)、写数据到文件(w)、做为命 令执行该文件(x)。对于目录来说是:读包含在目录中 的文件名称(r)、写信息到目录中去(增加和删除索引点的连接)、搜索目录(能用该目录名称作为路 径名去访问它所包含的文件或子目录)。具体来说就是: 

        1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。 

        2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。 

        3. 必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。 

        4. 如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其他用户。

修改文件权限

     首先讲修改文件的所有权,使用 chown 和 chgrp 命令: 

    chown new_user file or directory:修改文件或目录的所有者。 

    chgrp new_group file or directory:修改文件或目录的所属组。 

    这里需要注意的是:普通用户不能将文件或目录的所有权交与他人,只有 root 有这一权限。但是普通用户有权改变文件或目录的所属组。 

      由于每类用户的权限都是由 rwx 三位组成,因此可以用三个八进制数字表示文件的访问权。一个八进制数字可以用三个二进制数字表示,那么与其对应,权值 为 4 的位对应 r,权值为 2 的位对应 w,权值为 1 的位对应 x。对于一类用户,将这三位与其对应的权值相乘求和,就可以得出对该类用户的访 问权限。 

    改变文件访问权限的命令是 chmod,格式是: 

    chmod permission file_name 

    比如 chmod 764 a.txt,它表示对于文件的所有者,具有对该文件读、写、执行的权限。对于文件所属组的用户,拥有读、写的权限。对于其他用户,只有读权限。 

    这里需要注意的是:文件的创建者是唯一可以修改该文件访问权限的普通用户,另外一个可以修改文件访问权限的用户是 root。

posted @ 2007-12-18 18:39 十三郎 阅读(546) | 评论 (0)编辑 收藏

js innerHTML 问题

相信很多Ajax初学者都会遇到:用innerhtml插入的JS脚本无法执行,用Google搜了很久,找了两个不错的解决方案...

方案1:来自济南大学马秉尧老师的innerhtml.js

JavaScript代码
  1. /* innerhtml.js 
  2.  * Copyright Ma Bingyao <andot@ujn.edu.cn> 
  3.  * Version: 1.9 
  4.  * LastModified: 2006-06-04 
  5.  * This library is free.  You can redistribute it and/or modify it. 
  6.  * http://www.coolcode.cn/?p=117 
  7.  */  
  8.   
  9. var global_html_pool = [];  
  10. var global_script_pool = [];  
  11. var global_script_src_pool = [];  
  12. var global_lock_pool = [];  
  13. var innerhtml_lock = null;  
  14. var document_buffer = "";  
  15.   
  16. function set_innerHTML(obj_id, html, time) {  
  17.     if (innerhtml_lock == null) {  
  18.         innerhtml_lock = obj_id;  
  19.     }  
  20.     else if (typeof(time) == "undefined") {  
  21.         global_lock_pool[obj_id + "_html"] = html;  
  22.         window.setTimeout("set_innerHTML('" + obj_id + "', global_lock_pool['" + obj_id + "_html']);", 10);  
  23.         return;  
  24.     }  
  25.     else if (innerhtml_lock != obj_id) {  
  26.         global_lock_pool[obj_id + "_html"] = html;  
  27.         window.setTimeout("set_innerHTML('" + obj_id + "', global_lock_pool['" + obj_id + "_html'], " + time + ");", 10);  
  28.         return;  
  29.     }  
  30.   
  31.     function get_script_id() {  
  32.         return "script_" + (new Date()).getTime().toString(36)  
  33.           + Math.floor(Math.random() * 100000000).toString(36);  
  34.     }  
  35.   
  36.     document_buffer = "";  
  37.   
  38.     document.write = function (str) {  
  39.         document_buffer += str;  
  40.     }  
  41.     document.writeln = function (str) {  
  42.         document_buffer += str + "\n";  
  43.     }  
  44.   
  45.     global_html_pool = [];  
  46.   
  47.     var scripts = [];  
  48.     html = html.split(/<\/script>/i);  
  49.     for (var i = 0; i < html.length; i++) {  
  50.         global_html_pool[i] = html[i].replace(/<script[\s\S]*$/ig, "");  
  51.         scripts[i] = {text: '', src: '' };  
  52.         scripts[i].text = html[i].substr(global_html_pool[i].length);  
  53.         scripts[i].src = scripts[i].text.substr(0, scripts[i].text.indexOf('>') + 1);  
  54.         scripts[i].src = scripts[i].src.match(/src\s*=\s*(\"([^\"]*)\"|\'([^\']*)\'|([^\s]*)[\s>])/i); 
  55.         if (scripts[i].src) { 
  56.             if (scripts[i].src[2]) { 
  57.                 scripts[i].src = scripts[i].src[2]; 
  58.             } 
  59.             else if (scripts[i].src[3]) { 
  60.                 scripts[i].src = scripts[i].src[3]; 
  61.             } 
  62.             else if (scripts[i].src[4]) { 
  63.                 scripts[i].src = scripts[i].src[4]; 
  64.             } 
  65.             else { 
  66.                 scripts[i].src = ""; 
  67.             } 
  68.             scripts[i].text = ""; 
  69.         } 
  70.         else { 
  71.             scripts[i].src = ""; 
  72.             scripts[i].text = scripts[i].text.substr(scripts[i].text.indexOf('>') + 1); 
  73.             scripts[i].text = scripts[i].text.replace(/^\s*<\!--\s*/g, "");  
  74.         }  
  75.     }  
  76.   
  77.     var s;  
  78.     if (typeof(time) == "undefined") { 
  79.         s = 0; 
  80.     } 
  81.     else { 
  82.         s = time; 
  83.     } 
  84.  
  85.     var script, add_script, remove_script; 
  86.  
  87.     for (var i = 0; i < scripts.length; i++) { 
  88.         var add_html = "document_buffer += global_html_pool[" + i + "];\n"; 
  89.         add_html += "document.getElementById('" + obj_id + "').innerHTML = document_buffer;\n"; 
  90.         script = document.createElement("script"); 
  91.         if (scripts[i].src) { 
  92.             script.src = scripts[i].src; 
  93.             if (typeof(global_script_src_pool[script.src]) == "undefined") { 
  94.                 global_script_src_pool[script.src] = true; 
  95.                 s += 2000; 
  96.             } 
  97.             else { 
  98.                 s += 10; 
  99.             } 
  100.         } 
  101.         else { 
  102.             script.text = scripts[i].text; 
  103.             s += 10; 
  104.         } 
  105.         script.defer = true; 
  106.         script.type =  "text/javascript"; 
  107.         script.id = get_script_id(); 
  108.         global_script_pool[script.id] = script; 
  109.         add_script = add_html; 
  110.         add_script += "document.getElementsByTagName('head').item(0)";  
  111.         add_script += ".appendChild(global_script_pool['" + script.id + "']);\n"; 
  112.         window.setTimeout(add_script, s); 
  113.         remove_script = "document.getElementsByTagName('head').item(0)"; 
  114.         remove_script += ".removeChild(document.getElementById('" + script.id + "'));\n"; 
  115.         remove_script += "delete global_script_pool['" + script.id + "'];\n"; 
  116.         window.setTimeout(remove_script, s + 10000); 
  117.     } 
  118.  
  119.     var end_script = "if (document_buffer.match(/<\\/script>/i)) {\n"; 
  120.     end_script += "set_innerHTML('" + obj_id + "', document_buffer, " + s + ");\n"; 
  121.     end_script += "}\n"; 
  122.     end_script += "else {\n"; 
  123.     end_script += "document.getElementById('" + obj_id + "').innerHTML = document_buffer;\n"; 
  124.     end_script += "innerhtml_lock = null;\n"; 
  125.     end_script += "}";  
  126.     window.setTimeout(end_script, s);  
  127. }  

在线DEMO:http://test.coolcode.cn/innerhtml/
JS调用方法:

JavaScript代码
  1. set_innerHTML('要插入innerhtml的ID名称', '要插入的代码');  

方案2:来自www.ajaxwing.com的innerHTML简单版

JavaScript代码
  1. /* 
  2.  * 描述:跨浏览器的设置 innerHTML 方法 
  3.  *       允许插入的 HTML 代码中包含 script 和 style 
  4.  * 作者:kenxu <ken@ajaxwing.com> 
  5.  * 日期:2006-03-23 
  6.  * 参数: 
  7.  *    el: 合法的 DOM 树中的节点 
  8.  *    htmlCode: 合法的 HTML 代码 
  9.  * 经测试的浏览器:ie5+, firefox1.5+, opera8.5+ 
  10.  */  
  11. var setInnerHTML = function (el, htmlCode) {  
  12.     var ua = navigator.userAgent.toLowerCase();  
  13.     if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {  
  14.         htmlCode = '<div style="display:none">for IE</div>' + htmlCode;  
  15.         htmlCode = htmlCode.replace(/<script([^>]*)>/gi,  
  16.                                     '<script$1 defer>');  
  17.         el.innerHTML = htmlCode;  
  18.         el.removeChild(el.firstChild);  
  19.     } else {  
  20.         var el_next = el.nextSibling;  
  21.         var el_parent = el.parentNode;  
  22.         el_parent.removeChild(el);  
  23.         el.innerHTML = htmlCode;  
  24.         if (el_next) {  
  25.             el_parent.insertBefore(el, el_next)  
  26.         } else {  
  27.             el_parent.appendChild(el);  
  28.         }  
  29.     }  

调用方法:

JavaScript代码
  1. setInnerHTML('DOM 树中的节点''要插入的代码');    

简单版充分利用了浏览器自身的特性,执行效率高,兼容性好。唯一的缺点就是脚本中不能包含 document.write。

posted @ 2007-12-11 14:51 十三郎 阅读(2944) | 评论 (2)编辑 收藏

仅列出标题
共5页: 1 2 3 4 5 

导航

常用链接

留言簿(5)

随笔分类

文章分类

积分与排名