lost中100个值得回味的镜头

原本这是外国迷友们选出的TOP100,但我感觉很多场景的入选很摸不到头脑,便改动了一些,谁知这一改就改掉了大半,不得不感叹lost这部电视剧的伟大,看点实在是太多了!本TOP100的入选截止第五季第十三集,欢迎大家补充,加入你所认为最值得回味的镜头。^_^

Season 1

1.全剧开篇:回想第一季,迷失开篇的五分钟,Jack冲出丛林后的惊鸿一瞥,伴随着摄人心魄的声效以及漫天飞舞的残骸,我们终于体会到什么叫做震撼!(Season 1, Episode 1: Pilot, Part 1)

2. 新生:在Jack发现Kate的逃亡匪徒的身份后,两人在夕阳下的对话。Jack的回答造就了lost有史以来的第一次感动,这一刻,值得所有lost迷铭记:(Season 1, Episode 3: Tabula Rasa)
kate:“I want to tell you what i did!”
Jack:“I don't want to know.
It doesn't matter,kate!
Who we are,is the things before the crash.Three days ago,we all deaded.
So we should start over!”

3.locke的救助:Jack追寻他神出鬼没的父亲一路狂奔到悬崖边并遭遇险情,locke出手相救,随后两人的谈话让Jack终于决定坦然接受leader的重担。(不知当日后两人分别带领自己的队伍针锋相对时,是否还会回忆起如此往昔?)(Season 1, Episode 5: White Rabbit)

4.查理的微笑:当Locke尝试说服查理戒毒时,顺着Locke指引的方向,查理找到丢失已久吉他——失而复得的喜悦!(Season 1, Episode 6: House of the Rising Sun)

5.shannon的晚歌:夕阳的余晖下,shannon唱起那首La Mer,似乎,时间都放缓了脚步,驻足聆听。(Season 1, Episode 12: Whatever the Case May Be)

6.Hurley的815:为了能够赶上815航班,Hurley所做出的一系列举动,堪称第一季最强大的爆笑点。(Season 1, Episode 24: Exodus, Part 2)

Season 2

7.奇迹:Jack含泪对sarah说他对于她的双腿无能为力,但随后jack发现sarah的双腿依然有知觉!奇迹!发生了!(Season 1, Episode 1: Man of science,Man of faith)

8.海岸黄昏:夕阳西下,海风微拂。Hugo将Dharma的食物分发给众人,舒缓的音乐响起,众人的笑脸在昏暗的光线下浮现,温馨而宁静。(Season 2, Episode 4: Everybody Hates Hugo)

9.sun的戒指:Sun在种植她的小菜园时丢失了戒指,在kate的帮助下她找回了Jin的信物,同时也找回了对爱情的信任。(Season 2, Episode 5: …And Found)

10.Shannon之死:lost中第一例毫无准备的死亡,Sayid怀抱Shannon尸体的场景让人心碎。 (Season 2, Episode 6: Abandoned)

介绍一些PHP判断变量的函数

 

与其他语言不同,PHP不是一种严格的类型语言。基本上,这意味着开发者在使用一个变量前,不必明确地设定这个变量的类型(数字、字符串、布尔值)。相反,PHP解释程序根据存储在变量中的信息自动探测变量的类型。

虽然这一特点使用PHP编程非常容易,但它也存在一个重要的缺陷:当你需要测试一个变量的类型时,处理类型比较松散的语言就让人有些迷惑。幸运地是,PHP的开发者注意到这一情况,因此在其中包含了一个函数工具包,特别用它来测试变量并查明它们属于哪个特定的字符类别——也就是说,它们是否包含字符串、整数、对象或布尔值。

下面列出了这一类别中较为有用的函数,并提供说明与应用实例。

empty($var)

这个函数用来检查变量是否为空(没有值或零值)。用此函数来检查用户输入,例如,表格变量。保证它们包含有效数据。

 

<?php
// returns false
$var = "hello";
echo empty($var) ? "true" : "false";
// returns true
$var = 0000;
echo empty ($var) ? "true" : "false";
?>

 

gettype($var)

这个函数返回变量的类型。例如,"字符串"、"整数"、"布尔值"、"浮点值"等。在把变量插入严格类型的数据库域前,一般用此函数来验证变量是否为你期待的类型。

 

<?php
// returns string
$var = "hello";
echo gettype($var);
//returns double
$var = 1000.56;
echo gettype($var);
?>

 

is_bool($var)

这个函数测试一个变量看它是否包含一个布尔值(真/假)。用此函数检查变量是否为布尔变量。

<?php
// returns true
$var = false;
echo is_bool($var) ? "true" : "false";
?>

is_string($var)

这个函数测试一个变量是否为字符串变量。用此函数检查一个变量是否包含字符串数据。

<?php
// returns true
$var = "exception";
echo is_string($var) ? "true" : "false";
// returns true
$var = "88408";
echo is_string($var) ? "true" : "false";
?>

is_numeric($var)

这个函数测试一个变量看它是否包含一个数字或数字字符串(字符串包括一个符号、数字与小数点)。在将变量用于计算前,用此函数来验证它是否包含一个数字。

<?php
// returns true
$var = "+99.766";
echo is_numeric($var) ? "true" : "false";
// returns false
$var = "b00";
echo is_numeric($var) ? "true" : "false";
?>

is_array($var)

这个函数测试一个变量看它是一个PHP相关或是数字顺序索引数组。在循环中进行处理前,用此函数来检查变量是否为一个数组。

<?php
// returns true
$var = array("tiger", "lion", "zebra");
echo is_array($var) ? "true" : "false";
// returns false
$var = "zebra";
echo is_array($var) ? "true" : "false";
?>

is_null($var)

这个函数测试一个变量看它是否为NULL。在评估由SQL查询返回的数据时,用此函数来检查一个变量是否为NULL。

<?php
// returns false
$var = "aa";
echo is_null($var) ? "true" : "false";
// returns true
$var = null;
echo is_null($var) ? "true" : "false";
?>

is_object($var)

这个函数测试一个变量看它是否为一个PHP对象。在调用一个方法或访问属性前,一般用此函数来测试变量是否为PHP对象。

<?php
// returns false
$var = "exception";
echo is_object($var) ? "true" : "false";
// returns true
$var = new Exception;
echo is_object($var) ? "true" : "false";
?>

isset($var)

这个函数测试一个变量看它是否已被定义。在评估表格提交的结果时,一般用此函数来测试一个变量是否被定义。

<?php
// returns true
$var = "yes";
echo isset($var) ? "true" : "false";
// returns false
echo isset($test) ? "true" : "false";
?>

print_r($var)

这个函数打印一个变量的内容。用此函数来"窥探"一个变量,特别是在调试一个脚本时。

<?php
$var = array("one", "two", array("red", "green"), new Exception, 467);
print_r($var);
?>

 

 

 

 



 

 

注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

 

 

 

 

分类
Web编程 编程开发

C#解析、序列化JSON字符串的利器—Json.NET

Json.NET的简单介绍

首先介绍一个为方便在.NET中使用JSON的API,Json.NET。它方便我们读取从浏览器流向服务器的JSON对象,也方便在响应流中写入JSON对象。

Json.NET只提供了服务器端的方法,主要有实现JSON文本与XML互相转换的类,有自定义读写JSON的JsonReader类和JsonWriter类,还有一个非自定义读写JSON的JavaScriptSerializer类。

ASP.NET AJAX中,服务器端由JavaScriptSerializer类的几个方法来用于实现序列化和反序列化能力。在Json.NET中,服务器端的序列化 和反序列化能力则主要由JavaScriptConvert类的几个方法提供。本篇的例子只使用了JavaScriptConvert。

  1. JavaScriptConvert
    • Json.NET中,这个类用于序列化和反序列化JavaScript对象。
    • 这个类有两个方法:
      1. SerializeObject(object value, params JsonConverter[] converters),序列化,它有个重载方法SerializeObject(object value)
      2. DeserializeObject(string value, Type type),反序列化,它有个重载方法DeserializeObject(string value)

在客户端,Json.NET未提供支持。如果需要则可以结合使用上一篇“What is JSON:初识JSON”提到的json.js来处理客户端的系列化与反序列化。

下面我们尝试用这个API在ASP.NET中实现用JSON交互数据。

使用Json.NET在C/S中交互JSON数据的简单例子
  1. 先新建一个ASP.NET 网站。
  2. 将下载到的Binary文件夹中的Newtonsoft.Json.dll和Newtonsoft.Json.XML放入网站的bin文件,当然要先新建bin文件夹。然后对dll添加引用。
  3. 切 换到设计模式,从标准工具箱向页面上添加三个Label,Text分别为EmployeeID、EmployeeName、EmployeeInfo;三 个Textbox,ID分别为txtID、txtName、txtInfo;然后添加一个Button,ID为btnToJSONString,Text 为Invoke ToJSONString;然后添加一个Textbox,ID为txtJSON,Textmode为MultiLine,rows设为5;接着再分别添加 一个Button和Textbox,ID为btnToObject、txtStrEmployee,Button的Text为Invoke ToStrEmployee。
  4. 添加一个WebService项目。
    • 编写一个Employee类,然后两个WebMethod,接着在项目中对该Web服务添加引用。代码如下:[csharp]using System;
      using System.Web;
      using System.Collections;
      using System.Web.Services;
      using System.Web.Services.Protocols;
      using Newtonsoft.Json;class Employee
      {
      private string[] employeeInfo;
      public int EmployeeID;
      public string EmployeeName;
      public string[] EmployeeInfo
      {
      get { return this.employeeInfo; }
      set { this.employeeInfo = value; }
      }
      }
      /**/
      /// <summary>
      /// WebService 的摘要说明
      /// </summary>
      [WebService(Namespace = “http://tempuri.org/”)]
      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
      public class WebService : System.Web.Services.WebService
      {
      public WebService()
      {
      //如果使用设计的组件,请取消注释以下行
      //InitializeComponent();
      }
      [WebMethod]
      public string ToJSONString(int employeeID, string employeeName, string[] employeeInfo)
      {
      Employee employee = new Employee();
      employee.EmployeeID = employeeID;
      employee.EmployeeName = employeeName;
      employee.EmployeeInfo = employeeInfo;
      return JsonConvert.SerializeObject(employee);
      }
      [WebMethod]
      public string ToStrEmployee(string strJSON)
      {
      Employee decerializedEmployee = (Employee)JsonConvert.DeserializeObject(strJSON, typeof(Employee));
      return “ID: ” + decerializedEmployee.EmployeeID + ” ”
      + “Name: ” + decerializedEmployee.EmployeeName + ” ”
      + “Info: ” + decerializedEmployee.EmployeeInfo.GetValue(0).ToString();
      }
      }[/csharp]

成员的属性类型分别为数字、字符串和数组。

5、对两个Button编写事件代码

<span class="kwrd">protected</span> <span class="kwrd">void</span> btnToJSONString_Click(<span class="kwrd">object</span> sender, EventArgs e)

{

    MyServ.WebService MyWebServ = <span class="kwrd">new</span> MyServ.WebService();

    <span class="kwrd">string</span> employeeJSON = MyWebServ.ToJSONString(Int32.Parse(txtID.Text), txtName.Text, txtInfo.Text.Split(<span class="str">','</span>));

    txtJSON.Text = employeeJSON;

}

<span class="kwrd">protected</span> <span class="kwrd">void</span> btnToStrEmployee_Click(<span class="kwrd">object</span> sender, EventArgs e)

{

    MyServ.WebService MyWevServ = <span class="kwrd">new</span> MyServ.WebService();

    <span class="kwrd">string</span> strEmployee = MyWevServ.ToStrEmployee(txtJSON.Text);

    txtStrEmployee.Text = strEmployee;

}

 

6、按Ctrl + F5运行;在EmployeeID、EmployeeName、EmployeeInfo中输入123、Hunts.C及一些个人信息(用逗号隔开);点 击Invoke ToJSONString,经服务器端序列化后,结果在txtJSON文本框中;然后点击Invoke ToStrEmployee,此时txtJSON文本框中的JSON文本传输给服务器端,服务器端读取该JSON并反序列化成对象,而后在 txtStrEmployee中写入Employee的成员值。

\

只需要知道json里头除了name(名称)就是value(值),值有好几种格式,如果是数字就不用加引号,如果加了引号就是字符串,如果用[]包裹就是数组,如果出现{}就说明是嵌套的json。诸如此类。

分类
浏览器 软件应用

Chrome必备扩展推荐-LastPass

Google Chrome: LastPass Password Manager

Chrome 可以自动记录我们各种网站登录需要的帐号密码,但其只是仅仅记录而已,没有提供更为完善的管理功能,而且也存在一定的安全隐患。而 LastPass Password Manager (以下简称LastPass)则可以让你的Chrome拥有完美的密码管理功能。

安装完LastPass后,地址栏右端会添加对应的图标。在正式使用LastPass之前,我们需要注册它的登录帐号,整个过程很简单,一分钟即可搞定。虽然其是海外服务,但提供了简体中文页面,所以使用上对国内用户来说没什么影响。好了,现在我们登录LastPass(图6)。

Chrome必备扩展推荐 为浏览器强身健体

图6:LastPass主界面

之后,只要你登录网站输入帐号密码,Lastpass将自动记录你的密码(当然你可以不让其保存,点击LastPass工具按钮,之后再单击‘Never’,图7),在下一次你登录同一网站的时候,Lastpass就会自动填写登录所需的信息并自动登录,或者直接通过Lastpass的书签功能实现一键登录。

Chrome必备扩展推荐 为浏览器强身健体

图7:不允许LastPass记录密码帐号

其实除了这些功能外,LastPass 同时还具备自动填表功能、自动生成安全密码、从其它第三方密码管理服务(如Keepass、1Password、PassPack等)中导入数据、数据导出等一系列功能。相信你有了这个工具后就不怕忘记密码了,不过可千万记得LastPass服务的密码哦

 

分类
未分类

C#生成验证码图片代码

以下是本人整理的生成验证码图片的C#代码。不对,严格说应该是asp.net代码。。。

可以通过下面注释的部分采用cookie或session来验证!

protected void Page_Load(object sender, EventArgs e)
        {
            validateCode v = new validateCode();
            v.Length = this.length;
            v.FontSize = this.fontSize;
            v.Chaos = false;
            v.BackgroundColor = Color.Black;
            v.ChaosColor = this.chaosColor;
            v.CodeSerial = this.codeSerial;
            Color[] FontColors = { Color.White };
            v.Colors = FontColors;
            v.Fonts = this.fonts;
            v.FontSize = 14;
            v.Padding = this.padding;
            string code = v.CreateVerifyCode();                //取随机码
            v.CreateImageOnPage(code, this.Context);        // 输出图片
            //Response.Cookies.Add(new HttpCookie("CheckCode", code.ToLower()));// 使用Cookies取验证码的值
            Session["CheckCode"] = code;

        }

        #region 验证码长度(默认4个验证码的长度)
        int length = 4;
        /// <summary>
        /// 验证码长度(默认4个验证码的长度)
        /// </summary>
        public int Length
        {
            get { return length; }
            set { length = value; }
        }
        #endregion
        #region 验证码字体大小(为了显示扭曲效果,默认40像素,可以自行修改)
        int fontSize = 10;

        /// <summary>
        /// 验证码字体大小(为了显示扭曲效果,默认40像素,可以自行修改)
        /// </summary>
        public int FontSize
        {
            get { return fontSize; }
            set { fontSize = value; }
        }
        #endregion

        #region 边框补(默认1像素)
        int padding = 1;
        /// <summary>
        /// 边框补(默认1像素)
        /// </summary>
        public int Padding
        {
            get { return padding; }
            set { padding = value; }
        }
        #endregion
        #region 是否输出燥点(默认不输出)
        bool chaos = true;

        /// <summary>
        /// 是否输出燥点(默认不输出)
        /// </summary>
        public bool Chaos
        {
            get { return chaos; }
            set { chaos = value; }
        }
        #endregion

        #region 输出燥点的颜色(默认灰色)
        Color chaosColor = Color.LightGray;
        /// <summary>
        /// 输出燥点的颜色(默认灰色)
        /// </summary>
        public Color ChaosColor
        {
            get { return chaosColor; }
            set { chaosColor = value; }
        }
        #endregion
        #region 自定义背景色(默认白色)
        Color backgroundColor = Color.White;

        /// <summary>
        /// 自定义背景色(默认白色)
        /// </summary>
        public Color BackgroundColor
        {
            get { return backgroundColor; }
            set { backgroundColor = value; }
        }
        #endregion

        #region 自定义随机颜色数组
        Color[] colors = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
        /// <summary>
        /// 自定义随机颜色数组
        /// </summary>
        public Color[] Colors
        {
            get { return colors; }
            set { colors = value; }
        }
        #endregion

        #region 自定义字体数组
        string[] fonts = { "Arial", "Georgia" };
        /// <summary>
        /// 自定义字体数组
        /// </summary>
        public string[] Fonts
        {
            get { return fonts; }
            set { fonts = value; }
        }
        #endregion
        #region 自定义随机码字符串序列(使用逗号分隔)
         //string codeSerial = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
        string codeSerial = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
        /// <summary>
        /// 自定义随机码字符串序列
        /// </summary>
        public string CodeSerial
        {
            get { return codeSerial; }
            set { codeSerial = value; }
        }
        #endregion
        #region 产生波形滤镜效果
        private const double PI = 3.1415926535897932384626433832795;
        private const double PI2 = 6.283185307179586476925286766559;

        /// <summary>
        /// 正弦曲线Wave扭曲图片
        /// </summary>
        /// <param name="srcBmp">图片路径</param>
        /// <param name="bXDir">如果扭曲则选择为True</param>
        /// <param name="nMultValue">波形的幅度倍数,越大扭曲的程度越高,一般为3</param>
        /// <param name="dPhase">波形的起始相位,取值区间[0-2*PI)</param>
        /// <returns></returns>
        public System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase)
        {
            System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height);

            // 将位图背景填充为白色
            System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp);
            graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height);
            graph.Dispose();
            double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width;
            for (int i = 0; i < destBmp.Width; i++)
            {
                for (int j = 0; j < destBmp.Height; j++)
                {
                    double dx = 0;
                    dx = bXDir ? (PI2 * (double)j) / dBaseAxisLen : (PI2 * (double)i) / dBaseAxisLen;
                    dx += dPhase;
                    double dy = Math.Sin(dx);

                    // 取得当前点的颜色
                    int nOldX = 0, nOldY = 0;
                    nOldX = bXDir ? i + (int)(dy * dMultValue) : i;
                    nOldY = bXDir ? j : j + (int)(dy * dMultValue);
                    System.Drawing.Color color = srcBmp.GetPixel(i, j);
                    if (nOldX >= 0 && nOldX < destBmp.Width
                     && nOldY >= 0 && nOldY < destBmp.Height)
                    {
                        destBmp.SetPixel(nOldX, nOldY, color);
                    }
                }
            }

            return destBmp;
        }
        #endregion
        #region 生成校验码图片
        /// <summary>
        /// 生成校验码图片
        /// </summary>
        /// <param name="code">校验码</param>
        /// <returns></returns>
        public Bitmap CreateImageCode(string code)
        {
            int fSize = FontSize;
            int fWidth = fSize + Padding;

            int imageWidth = (int)(code.Length * fWidth) + 4 + Padding * 2;
            int imageHeight = fSize * 2 + Padding;
            System.Drawing.Bitmap image = new System.Drawing.Bitmap(imageWidth, imageHeight);
            Graphics g = Graphics.FromImage(image);
            g.Clear(BackgroundColor);
            Random rand = new Random();
            //给背景添加随机生成的燥点
            if (this.Chaos)
            {
                Pen pen = new Pen(ChaosColor, 0);
                int c = Length * 10;

                for (int i = 0; i < c; i++)
                {
                    int x = rand.Next(image.Width);
                    int y = rand.Next(image.Height);
                    g.DrawRectangle(pen, x, y, 1, 1);
                }
            }
            int left = 0, top = 0, top1 = 1, top2 = 1;
            int n1 = (imageHeight - FontSize - Padding * 2);
            int n2 = n1 / 4;
            top1 = n2;
            top2 = n2 * 2;

            Font f;
            Brush b;
            int cindex, findex;
            //随机字体和颜色的验证码字符
            for (int i = 0; i < code.Length; i++)
            {
                cindex = rand.Next(Colors.Length - 1);
                findex = rand.Next(Fonts.Length - 1);
                f = new System.Drawing.Font(Fonts[findex], fSize, System.Drawing.FontStyle.Bold);
                b = new System.Drawing.SolidBrush(Colors[cindex]);

                if (i % 2 == 1)
                {
                    top = top2;
                }
                else
                {
                    top = top1;
                }
                left = i * fWidth;
                g.DrawString(code.Substring(i, 1), f, b, left, top);
            }

            //画一个边框 边框颜色为Color.Gainsboro
            g.DrawRectangle(new Pen(Color.Gainsboro, 0), 0, 0, image.Width - 1, image.Height - 1);
            g.Dispose();

            //产生波形(Add By 51aspx.com)
            image = TwistImage(image, false, 1, 10);
            return image;
        }
        #endregion
        #region 将创建好的图片输出到页面
        public void CreateImageOnPage(string code, HttpContext context)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            Bitmap image = this.CreateImageCode(code);
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            context.Response.ClearContent();
            context.Response.ContentType = "image/Jpeg";
            context.Response.BinaryWrite(ms.GetBuffer());
            ms.Close();
            ms = null;
            image.Dispose();
            image = null;
        }
        #endregion

        #region 生成随机字符码
        public string CreateVerifyCode(int codeLen)
        {
            if (codeLen == 0)
            {
                codeLen = Length;
            }

            string[] arr = CodeSerial.Split(',');

            string code = "";

            int randValue = -1;

            Random rand = new Random(unchecked((int)DateTime.Now.Ticks));

            for (int i = 0; i < codeLen; i++)
            {
                randValue = rand.Next(0, arr.Length - 1);

                code += arr[randValue];
            }
            return code;
        }
        public string CreateVerifyCode()
        {
            return CreateVerifyCode(0);
        }
        #endregion
分类
操作系统 软件应用

regsvr32 注册.dll的用法

Regsvr 32命令是Windows中控件文件(如扩展名为DLL、OCX、CPL的文件)的注册和反注册工具。 命令格式
Regsvr32 [/s] [/n] [/i[:cmdline]] dllname
/u 卸载安装的控件,卸载服务器注册;
/s 注册成功后不显示操作成功信息框;
/i 调用DllInstall函数并把可选参数[cmdline]传给它,当使用/u时用来卸载DLL;
/n 不调用DllRegisterServer,该参数必须和/i一起使用。
简单实例
要手工注册“E:\\CPCW.dll”,只需在“开始→运行”中键入“Regsvr32 E:\\CPCW.dll”,单击“确定”按钮后会弹出提示信息“DllRegisterServer in CPCW.dll succeeded”,说明组件注册成功;如果要卸载此组件,在“开始→运行”中键入“Regsvr32 /u E:\\CPCW.dll”即可。
格式:regsvr32 [/s] [/n] [/i[:cmdline]] DLLname
使用参数——–解除服务器注册
使用参数[/s]——–无声;不显示消息框
使用参数———调用DllInstall,给其传递一个可选[cmdline];跟/u参数一起使用时卸载DLL。
使用参数[/n]——–不用调用DLLRegisterServer。这个参数必须跟/i一起使用。
实例1:IE无法打开新窗口
regsvr32 actxprxy.dll
regsvr32 shdocvw.dll
重启后如果还不能解决
regsvr32 mshtml.dll
regsvr32 urlmon.dll
regsvr32 msjava.dll
regsvr32 browseui.dll
regsvr32 oleaut32.dll
regsvr32 shell32.dll
实例2:IE无法保存HTML格式文件
regsvr32 inetcomm.dll
实例3:MSN无法登陆
regsvr32 softpub.dll
实例4:windows默认的文件关联混乱
regsvr32 /i shdocvw.dll
regsvr32 /i shell.dll
regsvr32 /i shdoc401.dll
实例5:Window server 2003中无法播放MP3
regsvr32 i3codeca.acm
regsvr32 i3codecx.ax
实例6:Windows添加/删除程序无法启动
regsvr32 mshtml.dll
regsvr32 /i shdocvw.dll
regsvr32 /i shell.dll
实例7 Windows搜索功能故障
regsvr32 urlmon.dll
实例8:禁止系统对媒体文件进行预览
regsvr32 /u shmedia.dll 恢复可用 regsvr32 shmedia.dll
实例9:卸载Win XP自带的zip功能
regsvr32 /u zipfldr.dll
实例10:禁用FSO对象
regsvr32 /u scrrun.dll
实例11:用户帐户打开后看不到里面的内容
regsvr32 nusrmgr.cpl     是用户账户的运行文件
regsvr32 mshtml.dll       是HTML解释器相关模块
regsvr32 jscript.dll       是Microsoft javascript脚本支持相关文件
regsvr32 /i shdocvw.dll   是为Windows应用程序添加基础文件和网络操作相关模块
用户帐户打开空白一般可能模块会出现问题,有的会出现比如模块找不到等
管理員無法打開或設置用戶權限解決方法:
執行:regsvr32 uscript.dll
      regsvr32 mshtml.dll
切换用户出现警示提示,“高级INF安装程序”
“错误:无法定位INF文件C:\WINDOWS\INF\icw.inf
regsvr32 MSHTML.DLL

本文出自 51CTO.COM技术博客

大家注册DLL或OCX的方法应该用Regsvr32.exe,用得多了大家一定会觉得在运行中写一长串东西很是烦人吧?!这里我向大家介绍一种麻烦一次方便"一生"的方法。这个方法只要右击你想注册或反注册的OCX或DLL就可以了。它的原理是通过修改注册表使右击OCX或DLL文件时出现注册和反注册的菜单项。
下面介绍这个方法
注册DLL文件:打开HKEY_CLASSES_ROOR\Dllfile,新建项shell,再其下新建Register,你会发现Register就是右键弹出的菜单名,再在其下建command,修改其"默认值"为Regsvr32 %1
反注册DLL文件:打开HKEY_CLASSES_ROOR\Dllfile,新建项shell,再其下新建Unregister,再在其下建command,修改其"默认值"为Regsvr32 %1 /u
注册和反注册OCX文件打开HKEY_CLASSES_ROOR\OCXfile,然后其它的方法和上面的一样的了。
右击一个OCX或DLL试试看,呵呵,Yes!出现了我们想要的Register和Unregister菜单项。
Activex注册和反注册工具——Regsvr32
使用过activex的人都知道,activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具。它的用法为:
regsver32详解
“regsvr32 [/s] [/n] [/i(:cmdline)] dllname”。其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。
参数有如下意义:
/u——反注册控件
/s——不管注册成功与否,均不显示提示框
/c——控制台输出
/i——跳过控件的选项进行安装(与注册不同)
/n——不注册控件,此选项必须与/i选项一起使用
如笔者要注册一amovie.ocx控件,则打入regsvr32 amovie.ocx即可,要反注册它时只需使用regsvr32 /u amovie.ocx就行了。
regsvr32 /s APIINEX.dll 注册DLL文件
regsvr32 /s /u APIINEX.dll 卸载DLL文件
regsvr32 Shortcut.ocx 注册ocx文件
regsvr32 /u Shortcut.ocx 卸载ocx文件
/s .dll,.ocx 注册成功后不显示提示信息。
/u .dll,.ocx 卸载
可把注册控件的命令放入批处理文件中。
regedit /s adofre15.reg
直接把注册信息注入注册表。
VB中如何用代码来实现控件的注册
—————————————————————
shell "regsvr32 """ & path & "\yourocxname.ocx"""
加/s不弹出对话框

分类
Web前端 编程开发

ckeditor的详细配置

一、使用方法:

 

1、在页面<head>中引入ckeditor核心文件ckeditor.js

<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span>=”<span class="attr">text</span>/<span class="attr">javascript</span>” <span class="attr">src</span>=”<span class="attr">ckeditor</span>/<span class="attr">ckeditor</span>.<span class="attr">js</span>”<span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>   

 

2、在使用编辑器的地方插入HTML控件<textarea>

<span class="kwrd">&lt;</span><span class="html">textarea</span> <span class="attr">id</span>=”<span class="attr">TextArea1</span>″ <span class="attr">cols</span>=”<span class="attr">20</span>″ <span class="attr">rows</span>=”<span class="attr">2</span>″ <span class="attr">class</span>=”<span class="attr">ckeditor</span>”<span class="kwrd">&gt;&lt;/</span><span class="html">textarea</span><span class="kwrd">&gt;</span>
&nbsp;

 

如果是ASP.NET环境,也可用服务器端控件<TextBox>

<span class="kwrd">&lt;</span><span class="html">asp:TextBox</span> <span class="attr">ID</span>=”<span class="attr">tbContent</span>” <span class="attr">runat</span>=”<span class="attr">server</span>” <span class="attr">TextMode</span>=”<span class="attr">MultiLine</span>” <span class="attr">class</span>=”<span class="attr">ckeditor</span>”<span class="kwrd">&gt;&lt;/</span><span class="html">asp:TextBox</span><span class="kwrd">&gt;</span>

注意在控件中加上 class=”ckeditor” 。

 

3、将相应的控件替换成编辑器代码

<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span>=”<span class="attr">text</span>/<span class="attr">javascript</span>”<span class="kwrd">&gt;</span>    
&nbsp;
CKEDITOR.replace(‘TextArea1′);    
&nbsp;
<span class="rem">//如果是在ASP.NET环境下用的服务器端控件&lt;TextBox&gt;    </span>
&nbsp;
CKEDITOR.replace(‘tbContent’);    
&nbsp;
<span class="rem">//如果&lt;TextBox&gt;控件在母版页中,要这样写    </span>
&nbsp;
CKEDITOR.replace(‘<%=tbContent.ClientID.Replace(“_”,”$”) %>’);    
&nbsp;
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>   

 

4、配置编辑器

 

    ckeditor的配置都集中在 ckeditor/config.js 文件中,下面是一些常用的配置参数:

<span class="rem">// 界面语言,默认为 'en' </span>
    config.language = <span class="str">'zh-cn'</span>; 
&nbsp;
<span class="rem">// 设置宽高 </span>
    config.width = 400; 
    config.height = 400; 
&nbsp;
<span class="rem">// 编辑器样式,有三种:'kama'(默认)、'office2003'、'v2' </span>
    config.skin = <span class="str">'v2'</span>; 
&nbsp;
<span class="rem">// 背景颜色 </span>
    config.uiColor = <span class="str">'#FFF'</span>; 
&nbsp;
<span class="rem">// 工具栏(基础'Basic'、全能'Full'、自定义)plugins/toolbar/plugin.js </span>
    config.toolbar = <span class="str">'Basic'</span>; 
    config.toolbar = <span class="str">'Full'</span>; 
&nbsp;
<span class="rem">//这将配合: </span>
&nbsp;
    config.toolbar_Full = [ 
&nbsp;
[<span class="str">'Source'</span>,<span class="str">'-'</span>,<span class="str">'Save'</span>,<span class="str">'NewPage'</span>,<span class="str">'Preview'</span>,<span class="str">'-'</span>,<span class="str">'Templates'</span>], 
&nbsp;
[<span class="str">'Cut'</span>,<span class="str">'Copy'</span>,<span class="str">'Paste'</span>,<span class="str">'PasteText'</span>,<span class="str">'PasteFromWord'</span>,<span class="str">'-'</span>,<span class="str">'Print'</span>, <span class="str">'SpellChecker'</span>, <span class="str">'Scayt'</span>], 
&nbsp;
[<span class="str">'Undo'</span>,<span class="str">'Redo'</span>,<span class="str">'-'</span>,<span class="str">'Find'</span>,<span class="str">'Replace'</span>,<span class="str">'-'</span>,<span class="str">'SelectAll'</span>,<span class="str">'RemoveFormat'</span>], 
&nbsp;
[<span class="str">'Form'</span>, <span class="str">'Checkbox'</span>, <span class="str">'Radio'</span>, <span class="str">'TextField'</span>, <span class="str">'Textarea'</span>, <span class="str">'Select'</span>, <span class="str">'Button'</span>, <span class="str">'ImageButton'</span>, <span class="str">'HiddenField'</span>], 
&nbsp;
<span class="str">'/'</span>, 
&nbsp;
[<span class="str">'Bold'</span>,<span class="str">'Italic'</span>,<span class="str">'Underline'</span>,<span class="str">'Strike'</span>,<span class="str">'-'</span>,<span class="str">'Subscript'</span>,<span class="str">'Superscript'</span>], 
&nbsp;
[<span class="str">'NumberedList'</span>,<span class="str">'BulletedList'</span>,<span class="str">'-'</span>,<span class="str">'Outdent'</span>,<span class="str">'Indent'</span>,<span class="str">'Blockquote'</span>], 
&nbsp;
[<span class="str">'JustifyLeft'</span>,<span class="str">'JustifyCenter'</span>,<span class="str">'JustifyRight'</span>,<span class="str">'JustifyBlock'</span>], 
&nbsp;
[<span class="str">'Link'</span>,<span class="str">'Unlink'</span>,<span class="str">'Anchor'</span>], 
&nbsp;
[<span class="str">'Image'</span>,<span class="str">'Flash'</span>,<span class="str">'Table'</span>,<span class="str">'HorizontalRule'</span>,<span class="str">'Smiley'</span>,<span class="str">'SpecialChar'</span>,<span class="str">'PageBreak'</span>], 
&nbsp;
<span class="str">'/'</span>, 
&nbsp;
[<span class="str">'Styles'</span>,<span class="str">'Format'</span>,<span class="str">'Font'</span>,<span class="str">'FontSize'</span>], 
&nbsp;
[<span class="str">'TextColor'</span>,<span class="str">'BGColor'</span>] 
&nbsp;
]; 
&nbsp;
    <span class="rem">//工具栏是否可以被收缩 </span>
config.toolbarCanCollapse = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
    <span class="rem">//工具栏的位置 </span>
config.toolbarLocation = <span class="str">'top'</span>;<span class="rem">//可选:bottom </span>
&nbsp;
&nbsp;
    <span class="rem">//工具栏默认是否展开 </span>
config.toolbarStartupExpanded = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
<span class="rem">// 取消 "拖拽以改变尺寸"功能 plugins/resize/plugin.js </span>
config.resize_enabled = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
    <span class="rem">//改变大小的最大高度 </span>
    config.resize_maxHeight = 3000; 
&nbsp;
&nbsp;
    <span class="rem">//改变大小的最大宽度 </span>
config.resize_maxWidth = 3000; 
&nbsp;
    <span class="rem">//改变大小的最小高度 </span>
config.resize_minHeight = 250; 
&nbsp;
    <span class="rem">//改变大小的最小宽度 </span>
config.resize_minWidth = 750; 
&nbsp;
<span class="rem">// 当提交包含有此编辑器的表单时,是否自动更新元素内的数据 </span>
config.autoUpdateElement = <span class="kwrd">true</span>; 
&nbsp;
<span class="rem">// 设置是使用绝对目录还是相对目录,为空为相对目录 </span>
config.baseHref = <span class="str">''</span>; 
&nbsp;
    <span class="rem">// 编辑器的z-index值 </span>
config.baseFloatZIndex = 10000; 
&nbsp;
<span class="rem">//设置快捷键 </span>
config.keystrokes = [ 
&nbsp;
[ CKEDITOR.ALT + 121 <span class="rem">/*F10*/</span>, <span class="str">'toolbarFocus'</span> ], <span class="rem">//获取焦点 </span>
&nbsp;
[ CKEDITOR.ALT + 122 <span class="rem">/*F11*/</span>, <span class="str">'elementsPathFocus'</span> ], <span class="rem">//元素焦点 </span>
&nbsp;
       [ CKEDITOR.SHIFT + 121 <span class="rem">/*F10*/</span>, <span class="str">'contextMenu'</span> ], <span class="rem">//文本菜单 </span>
&nbsp;
       [ CKEDITOR.CTRL + 90 <span class="rem">/*Z*/</span>, <span class="str">'undo'</span> ], <span class="rem">//撤销 </span>
&nbsp;
[ CKEDITOR.CTRL + 89 <span class="rem">/*Y*/</span>, <span class="str">'redo'</span> ], <span class="rem">//重做 </span>
&nbsp;
[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 <span class="rem">/*Z*/</span>, <span class="str">'redo'</span> ], <span class="rem">// </span>
&nbsp;
        [ CKEDITOR.CTRL + 76 <span class="rem">/*L*/</span>, <span class="str">'link'</span> ], <span class="rem">//链接 </span>
&nbsp;
        [ CKEDITOR.CTRL + 66 <span class="rem">/*B*/</span>, <span class="str">'bold'</span> ], <span class="rem">//粗体 </span>
&nbsp;
[ CKEDITOR.CTRL + 73 <span class="rem">/*I*/</span>, <span class="str">'italic'</span> ], <span class="rem">//斜体 </span>
&nbsp;
[ CKEDITOR.CTRL + 85 <span class="rem">/*U*/</span>, <span class="str">'underline'</span> ], <span class="rem">//下划线 </span>
&nbsp;
        [ CKEDITOR.ALT + 109 <span class="rem">/*-*/</span>, <span class="str">'toolbarCollapse'</span> ] 
&nbsp;
] 
&nbsp;
&nbsp;
&nbsp;
<span class="rem">//设置快捷键 可能与浏览器快捷键冲突 plugins/keystrokes/plugin.js. </span>
&nbsp;
config.blockedKeystrokes = [ 
&nbsp;
CKEDITOR.CTRL + 66 <span class="rem">/*B*/</span>, 
&nbsp;
CKEDITOR.CTRL + 73 <span class="rem">/*I*/</span>, 
&nbsp;
CKEDITOR.CTRL + 85 <span class="rem">/*U*/</span> 
&nbsp;
] 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//设置编辑内元素的背景色的取值 plugins/colorbutton/plugin.js. </span>
&nbsp;
config.colorButton_backStyle = { 
&nbsp;
element : <span class="str">'span'</span>, 
&nbsp;
styles : { <span class="str">'background-color'</span> : <span class="str">'#(color)'</span> } 
&nbsp;
} 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//设置前景色的取值 plugins/colorbutton/plugin.js </span>
&nbsp;
config.colorButton_colors = <span class="str">'000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE, A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5, FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF'</span>;
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否在选择颜色时显示"其它颜色"选项 plugins/colorbutton/plugin.js </span>
&nbsp;
config.colorButton_enableMore = <span class="kwrd">false</span> ;
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//区块的前景色默认值设置 plugins/colorbutton/plugin.js </span>
&nbsp;
config.colorButton_foreStyle = { 
&nbsp;
element : <span class="str">'span'</span>, 
&nbsp;
styles : { <span class="str">'color'</span> : <span class="str">'#(color)'</span> } 
&nbsp;
}; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//所需要添加的CSS文件 在此添加 可使用相对路径和网站的绝对路径 </span>
&nbsp;
config.contentsCss = <span class="str">'./contents.css'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//文字方向 </span>
&nbsp;
config.contentsLangDirection = <span class="str">'rtl'</span>; <span class="rem">//从左到右 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//CKeditor的配置文件 若不想配置 留空即可 </span>
&nbsp;
CKEDITOR.replace( <span class="str">'myfiled'</span>, { customConfig : <span class="str">'./config.js'</span> } ); 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//界面编辑框的背景色 plugins/dialog/plugin.js </span>
&nbsp;
config.dialog_backgroundCoverColor = <span class="str">'rgb(255, 254, 253)'</span>; <span class="rem">//可设置参考 </span>
&nbsp;
config.dialog_backgroundCoverColor = <span class="str">'white'</span> <span class="rem">//默认 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//背景的不透明度 数值应该在:0.0~1.0 之间 plugins/dialog/plugin.js </span>
&nbsp;
config.dialog_backgroundCoverOpacity = 0.5 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//移动或者改变元素时 边框的吸附距离 单位:像素 plugins/dialog/plugin.js </span>
&nbsp;
config.dialog_magnetDistance = 20; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否拒绝本地拼写检查和提示 默认为拒绝 目前仅firefox和safari支持 plugins/wysiwygarea/plugin.js. </span>
&nbsp;
config.disableNativeSpellChecker = <span class="kwrd">true</span> 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//进行表格编辑功能 如:添加行或列 目前仅firefox支持 plugins/wysiwygarea/plugin.js </span>
&nbsp;
config.disableNativeTableHandles = <span class="kwrd">true</span>; <span class="rem">//默认为不开启 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否开启 图片和表格 的改变大小的功能 config.disableObjectResizing = true; </span>
&nbsp;
config.disableObjectResizing = <span class="kwrd">false</span> <span class="rem">//默认为开启 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//设置HTML文档类型 </span>
&nbsp;
config.docType = <span class="str">'&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22"'</span>;
&nbsp;
&nbsp;
    <span class="rem">//是否对编辑区域进行渲染 plugins/editingblock/plugin.js </span>
&nbsp;
config.editingBlock = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//编辑器中回车产生的标签 </span>
&nbsp;
config.enterMode = CKEDITOR.ENTER_P; <span class="rem">//可选:CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否使用HTML实体进行输出 plugins/entities/plugin.js </span>
&nbsp;
config.entities = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//定义更多的实体 plugins/entities/plugin.js </span>
&nbsp;
config.entities_additional = <span class="str">'#39'</span>; <span class="rem">//其中#代替了&amp; </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否转换一些难以显示的字符为相应的HTML字符 plugins/entities/plugin.js </span>
&nbsp;
config.entities_greek = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否转换一些拉丁字符为HTML plugins/entities/plugin.js </span>
&nbsp;
config.entities_latin = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否转换一些特殊字符为ASCII字符 如"This is Chinese: 汉语."转换为"This is Chinese: &amp;#27721;&amp;#35821;." plugins/entities/plugin.js </span>
&nbsp;
config.entities_processNumerical = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//添加新组件 </span>
&nbsp;
config.extraPlugins = <span class="str">'myplugin'</span>; <span class="rem">//非默认 仅示例 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//使用搜索时的高亮色 plugins/find/plugin.js </span>
&nbsp;
config.find_highlight = { 
&nbsp;
element : <span class="str">'span'</span>, 
&nbsp;
styles : { <span class="str">'background-color'</span> : <span class="str">'#ff0'</span>, <span class="str">'color'</span> : <span class="str">'#00f'</span> } 
&nbsp;
}; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//默认的字体名 plugins/font/plugin.js </span>
&nbsp;
config.font_defaultLabel = <span class="str">'Arial'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//字体编辑时的字符集 可以添加常用的中文字符:宋体、楷体、黑体等 plugins/font/plugin.js </span>
&nbsp;
config.font_names = <span class="str">'Arial;Times New Roman;Verdana'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//文字的默认式样 plugins/font/plugin.js </span>
&nbsp;
config.font_style = { 
&nbsp;
element   : <span class="str">'span'</span>, 
&nbsp;
styles   : { <span class="str">'font-family'</span> : <span class="str">'#(family)'</span> }, 
&nbsp;
overrides : [ { element : <span class="str">'font'</span>, attributes : { <span class="str">'face'</span> : <span class="kwrd">null</span> } } ] 
&nbsp;
}; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//字体默认大小 plugins/font/plugin.js </span>
&nbsp;
config.fontSize_defaultLabel = <span class="str">'12px'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//字体编辑时可选的字体大小 plugins/font/plugin.js </span>
&nbsp;
config.fontSize_sizes =<span class="str">'8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px'</span>;
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//设置字体大小时 使用的式样 plugins/font/plugin.js </span>
&nbsp;
config.fontSize_style = { 
&nbsp;
element   : <span class="str">'span'</span>, 
&nbsp;
styles   : { <span class="str">'font-size'</span> : <span class="str">'#(size)'</span> }, 
&nbsp;
overrides : [ { element : <span class="str">'font'</span>, attributes : { <span class="str">'size'</span> : <span class="kwrd">null</span> } } ] 
&nbsp;
}; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否强制复制来的内容去除格式 plugins/pastetext/plugin.js </span>
&nbsp;
config.forcePasteAsPlainText =<span class="kwrd">false</span>; <span class="rem">//不去除 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否强制用"&amp;"来代替"&amp;amp;"plugins/htmldataprocessor/plugin.js </span>
&nbsp;
config.forceSimpleAmpersand = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对address标签进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_address = { element : <span class="str">'address'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'styledAddress'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对DIV标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_div = { element : <span class="str">'div'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'normalDiv'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对H1标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_h1 = { element : <span class="str">'h1'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'contentTitle1'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对H2标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_h2 = { element : <span class="str">'h2'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'contentTitle2'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对H3标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_h1 = { element : <span class="str">'h3'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'contentTitle3'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对H4标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_h1 = { element : <span class="str">'h4'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'contentTitle4'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对H5标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_h1 = { element : <span class="str">'h5'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'contentTitle5'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对H6标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_h1 = { element : <span class="str">'h6'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'contentTitle6'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对P标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_p = { element : <span class="str">'p'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'normalPara'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对PRE标签自动进行格式化 plugins/format/plugin.js </span>
&nbsp;
config.format_pre = { element : <span class="str">'pre'</span>, attributes : { <span class="kwrd">class</span> : <span class="str">'code'</span> } }; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//用分号分隔的标签名字 在工具栏上显示 plugins/format/plugin.js </span>
&nbsp;
config.format_tags = <span class="str">'p;h1;h2;h3;h4;h5;h6;pre;address;div'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否使用完整的html编辑模式 如使用,其源码将包含:&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;等标签 </span>
&nbsp;
config.fullPage = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否忽略段落中的空字符 若不忽略 则字符将以""表示 plugins/wysiwygarea/plugin.js </span>
&nbsp;
config.ignoreEmptyParagraph = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//在清除图片属性框中的链接属性时 是否同时清除两边的&lt;a&gt;标签 plugins/image/plugin.js </span>
&nbsp;
config.image_removeLinkByEmptyURL = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//一组用逗号分隔的标签名称,显示在左下角的层次嵌套中 plugins/menu/plugin.js. </span>
&nbsp;
config.menu_groups =<span class="str">'clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//显示子菜单时的延迟,单位:ms plugins/menu/plugin.js </span>
&nbsp;
config.menu_subMenuDelay = 400; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//当执行"新建"命令时,编辑器中的内容 plugins/newpage/plugin.js </span>
&nbsp;
config.newpage_html = <span class="str">""</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//当从word里复制文字进来时,是否进行文字的格式化去除 plugins/pastefromword/plugin.js </span>
&nbsp;
config.pasteFromWordIgnoreFontFace = <span class="kwrd">true</span>; <span class="rem">//默认为忽略格式 </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否使用&lt;h1&gt;&lt;h2&gt;等标签修饰或者代替从word文档中粘贴过来的内容 plugins/pastefromword/plugin.js </span>
&nbsp;
config.pasteFromWordKeepsStructure = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//从word中粘贴内容时是否移除格式 plugins/pastefromword/plugin.js </span>
&nbsp;
config.pasteFromWordRemoveStyle = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对应后台语言的类型来对输出的HTML内容进行格式化,默认为空 </span>
&nbsp;
config.protectedSource.push( /&lt;?[sS]*??&gt;/g );   <span class="rem">// PHP Code </span>
&nbsp;
config.protectedSource.push( <span class="rem">//g );   // ASP Code </span>
&nbsp;
config.protectedSource.push( /(]+&gt;[s|S]*?&lt;/asp:[^&gt;]+&gt;)|(]+/&gt;)/gi );   <span class="rem">// ASP.Net Code </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//当输入:shift+Enter时插入的标签 </span>
&nbsp;
config.shiftEnterMode = CKEDITOR.ENTER_P; <span class="rem">//可选:CKEDITOR.ENTER_BR或CKEDITOR.ENTER_DIV </span>
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//可选的表情替代字符 plugins/smiley/plugin.js. </span>
&nbsp;
config.smiley_descriptions = [ 
&nbsp;
<span class="str">':)'</span>, <span class="str">':('</span>, <span class="str">';)'</span>, <span class="str">':D'</span>, <span class="str">':/'</span>, <span class="str">':P'</span>, 
&nbsp;
<span class="str">''</span>, <span class="str">''</span>, <span class="str">''</span>, <span class="str">''</span>, <span class="str">''</span>, <span class="str">''</span>, 
&nbsp;
<span class="str">''</span>, <span class="str">';('</span>, <span class="str">''</span>, <span class="str">''</span>, <span class="str">''</span>, <span class="str">''</span>, 
&nbsp;
<span class="str">''</span>, <span class="str">':kiss'</span>, <span class="str">''</span> ]; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//对应的表情图片 plugins/smiley/plugin.js </span>
&nbsp;
config.smiley_images = [ 
&nbsp;
<span class="str">'regular_smile.gif'</span>,<span class="str">'sad_smile.gif'</span>,<span class="str">'wink_smile.gif'</span>,<span class="str">'teeth_smile.gif'</span>,<span class="str">'confused_smile.gif'</span>,<span class="str">'tounge_smile.gif'</span>, 
&nbsp;
<span class="str">'embaressed_smile.gif'</span>,<span class="str">'omg_smile.gif'</span>,<span class="str">'whatchutalkingabout_smile.gif'</span>,<span class="str">'angry_smile.gif'</span>,<span class="str">'angel_smile.gif'</span>,<span class="str">'shades_smile.gif'</span>, 
&nbsp;
<span class="str">'devil_smile.gif'</span>,<span class="str">'cry_smile.gif'</span>,<span class="str">'lightbulb.gif'</span>,<span class="str">'thumbs_down.gif'</span>,<span class="str">'thumbs_up.gif'</span>,<span class="str">'heart.gif'</span>, 
&nbsp;
<span class="str">'broken_heart.gif'</span>,<span class="str">'kiss.gif'</span>,<span class="str">'envelope.gif'</span>]; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//表情的地址 plugins/smiley/plugin.js </span>
&nbsp;
config.smiley_path = <span class="str">'plugins/smiley/images/'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//页面载入时,编辑框是否立即获得焦点 plugins/editingblock/plugin.js plugins/editingblock/plugin.js. </span>
&nbsp;
config.startupFocus = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//载入时,以何种方式编辑 源码和所见即所得 "source"和"wysiwyg" plugins/editingblock/plugin.js. </span>
&nbsp;
config.startupMode =<span class="str">'wysiwyg'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//载入时,是否显示框体的边框 plugins/showblocks/plugin.js </span>
&nbsp;
config.startupOutlineBlocks = <span class="kwrd">false</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//是否载入样式文件 plugins/stylescombo/plugin.js. </span>
&nbsp;
config.stylesCombo_stylesSet = <span class="str">'default'</span>; 
&nbsp;
<span class="rem">//以下为可选 </span>
&nbsp;
config.stylesCombo_stylesSet = <span class="str">'mystyles'</span>; 
&nbsp;
config.stylesCombo_stylesSet = <span class="str">'mystyles:/editorstyles/styles.js'</span>; 
&nbsp;
config.stylesCombo_stylesSet = <span class="str">'mystyles:http://www.example.com/editorstyles/styles.js'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//起始的索引值 </span>
&nbsp;
config.tabIndex = 0; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//当用户键入TAB时,编辑器走过的空格数,(&amp;nbsp;) 当值为0时,焦点将移出编辑框 plugins/tab/plugin.js </span>
&nbsp;
config.tabSpaces = 0; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//默认使用的模板 plugins/templates/plugin.js. </span>
&nbsp;
config.templates = <span class="str">'default'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//用逗号分隔的模板文件plugins/templates/plugin.js. </span>
&nbsp;
config.templates_files = [ <span class="str">'plugins/templates/templates/default.js'</span> ] 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//当使用模板时,"编辑内容将被替换"框是否选中 plugins/templates/plugin.js </span>
&nbsp;
config.templates_replaceContent = <span class="kwrd">true</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//主题 </span>
&nbsp;
config.theme = <span class="str">'default'</span>; 
&nbsp;
&nbsp;
&nbsp;
    <span class="rem">//撤销的记录步数 plugins/undo/plugin.js </span>
&nbsp;
config.undoStackSize =20; 
&nbsp;
&nbsp;
&nbsp;
<span class="rem">// 在 CKEditor 中集成 CKFinder,注意 ckfinder 的路径选择要正确。 </span>
&nbsp;
<span class="rem">//CKFinder.SetupCKEditor(null, '/ckfinder/'); </span>
&nbsp;

 

二、 一些使用技巧

 

1、在页面中即时设置编辑器

<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span>=”<span class="attr">text</span>/<span class="attr">javascript</span>”<span class="kwrd">&gt;</span> 
&nbsp;
<span class="rem">//示例1:设置工具栏为基本工具栏,高度为70 </span>
&nbsp;
CKEDITOR.replace(‘<%=tbLink.ClientID.Replace(“_”,”$”) %>’, 
&nbsp;
{ toolbar:’Basic’, height:70 }); 
&nbsp;
<span class="rem">//示例2:工具栏为自定义类型 </span>
&nbsp;
CKEDITOR.replace( ‘editor1′, 
&nbsp;
{ 
&nbsp;
toolbar : 
&nbsp;
[ 
&nbsp;
<span class="rem">//加粗     斜体,     下划线      穿过线      下标字        上标字 </span>
&nbsp;
[<span class="str">'Bold'</span>,<span class="str">'Italic'</span>,<span class="str">'Underline'</span>,<span class="str">'Strike'</span>,<span class="str">'Subscript'</span>,<span class="str">'Superscript'</span>], 
&nbsp;
<span class="rem">//数字列表          实体列表            减小缩进    增大缩进 </span>
&nbsp;
[<span class="str">'NumberedList'</span>,<span class="str">'BulletedList'</span>,<span class="str">'-'</span>,<span class="str">'Outdent'</span>,<span class="str">'Indent'</span>], 
&nbsp;
<span class="rem">//左对齐             居中对齐          右对齐          两端对齐 </span>
&nbsp;
[<span class="str">'JustifyLeft'</span>,<span class="str">'JustifyCenter'</span>,<span class="str">'JustifyRight'</span>,<span class="str">'JustifyBlock'</span>], 
&nbsp;
<span class="rem">//超链接 取消超链接 锚点 </span>
&nbsp;
[<span class="str">'Link'</span>,<span class="str">'Unlink'</span>,<span class="str">'Anchor'</span>], 
&nbsp;
<span class="rem">//图片    flash    表格       水平线            表情       特殊字符        分页符 </span>
&nbsp;
[<span class="str">'Image'</span>,<span class="str">'Flash'</span>,<span class="str">'Table'</span>,<span class="str">'HorizontalRule'</span>,<span class="str">'Smiley'</span>,<span class="str">'SpecialChar'</span>,<span class="str">'PageBreak'</span>], 
&nbsp;
‘/’, 
&nbsp;
<span class="rem">//样式       格式      字体    字体大小 </span>
&nbsp;
[<span class="str">'Styles'</span>,<span class="str">'Format'</span>,<span class="str">'Font'</span>,<span class="str">'FontSize'</span>], 
&nbsp;
<span class="rem">//文本颜色     背景颜色 </span>
&nbsp;
[<span class="str">'TextColor'</span>,<span class="str">'BGColor'</span>], 
&nbsp;
<span class="rem">//全屏           显示区块 </span>
&nbsp;
[<span class="str">'Maximize'</span>, <span class="str">'ShowBlocks'</span>,<span class="str">'-'</span>] 
&nbsp;
] 
&nbsp;
} 
&nbsp;
); 
&nbsp;
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span> 

 

三、精简ckeditor

 

    在部署到Web服务器上时,下列文件夹和文件都可以删除:

 

    /_samples :示例文件夹;

 

    /_source :未压缩源程序;

 

    /lang文件夹下除 zh-cn.js、en.js 以外的文件(也可以根据需要保留其他语言文件);

 

    根目录下的 changes.html(更新列表),install.html(安装指向),license.html(使用许可);

分类
Web前端

EXTJS GRID 改变单元格背景颜色的方法

第一种情况:加载数据时改变列的颜色

首先定义一个样式如下(这里以红色背景为例):

<span style="color: maroon">.x-grid-back-red
</span>{
    <span style="color: red">background</span>: <span style="color: blue">#FF0000</span>;
}
定义改变颜色的列:
{
    header: <span class="str">'摘要'</span>, dataIndex: <span class="str">'zhaoyao'</span>, align: <span class="str">'left'</span>, width: 150,
    renderer: <span class="kwrd">function</span> (v, m) {
        m.css = <span class="str">'x-grid-back-red'</span>;
        <span class="kwrd">return</span> v;
    }
};

效果图如下:

第二种情况:加载数据完成后改变行的颜色

首先要解决的一个问题是如果判断数据已经加载完毕,最简单的方法是给grid的store添加onload事件。

如果你想有条件地改变某行的背景颜色,则还需要遍历gird的store,这里有个简单的方法即store的

each方法。看下面这个例子:

<p>grid.getStore().on(<span class="str">'load'</span>,<span class="kwrd">function</span>(s,records));</p>
效果图如下:

第三种情况:使用Ext本身的颜色渲染效果

暂时只发现Ext已经设计好的一种效果:单双行背景颜色不同。

很简单,在grid中配置stripeRows为true即可! 
另外,如果想使用自己定义的行的背景颜色,那就去修改ext-all.css吧,提供几个:

———–在ext-all.css修改代码如下———

.x-grid3-row

{

    border-color: #ffaaee; /*改变grid边框颜色*/

   
border-top-color: #fff;

}

.x-grid3-row-alt

{

    background-color: #ddeeaa; /*改变行的颜色*/

}

.x-grid3-row-over

{

    border-color: #ddd;

    background-color: #ee1166; /*鼠标移上去改变行的底色*/

   
background-image: url(../images/default/grid/row-over.gif);

}

<span class="rem">//修改GRID某一行样式 </span>
grid.getView().addRowClass(r,css)
&#160;
<span class="rem">//修改grid某一单元格样式 </span>
Ext.get(grid.getView().getCell(r,c)).addClass(css)
grid.getView().getRow(r).style.backgroundColor=<span class="str">&quot;red&quot;</span>; 
<span class="rem">//css样式为自定义样式</span>
分类
Web前端

ExtJs中xtype含义和对照表

序言
根据我在论坛上的观察,xtype用起来的时候疑惑会比较多。甚至有些人根本忽略xtype,或者不清楚它是什么。所以我决定阐述一下这个xtype的概念。
定义
xtype就是一个代表类(Class)的标识名字。
譬如,你有这个类,名字是Ext.ux.MyGrid。正常情况下你需要用这个名字来实例化这个类(创建类的对象)。
除了类名外,你还可以这样登记类的xtype:
Ext.reg(‘mygrid’, Ext.ux.MyGrid);
其中xtype 是 mygrid 而类名的一般形式是Ext.ux.MyGrid。上面的语句登记了新的xtype,换种说法说,xtype mygrid 与类 Ext.ux.MyGrid是连在一起的。
到底有什么好处?
试想一下,你手头上的是一个大型的项目,为了响应用户的操作,程序里面包含者大量的对象(windows、forms、grids)。用户点击图标或按钮,就会新建一个窗体,窗体里面又有grid,最终在屏幕上渲染出来。
嗯,我们回到Ext2.x之前的编码,那时候我们实例化所有对象是页面第一次加载后就进行的(程序代码第一次的运行)。在客户端内存中,Ext.ux.MyGrid类的对象已经存在,等待用户的点击。 同样是这个grid,假设你上百个的实例,…是多么浪费宝贵的资源啊!很多grid其实用户未必会点击让它出现。
延时实例化
如果你使用xtype,那么在内存中的仅仅是一个配置项对象,像:

    <span class="lnum">   1:  </span>{xtype:'mygrid&quot;, border:<span class="kwrd">false</span>, width:600, height:400, ...} 

消耗没有复杂的实例对象来得大。

嗯,用户点击按钮或图标会怎么样呢?Ext会辨认出它是一个准备要渲染的grid但不立刻实例化,Ext在ComponentMgr的帮忙下明白这么一回事:“如果我要实例化xtype mygrid的对象,我就知道要创建的实际是类Ext.ux.MyGrid的对象”。即如下列代码:

<span class="lnum">   1:  </span>create : <span class="kwrd">function</span>(config, defaultType){  
<span class="lnum">   2:  </span>    <span class="kwrd">return</span> <span class="kwrd">new</span> types[config.xtype || defaultType](config);  
<span class="lnum">   3:  </span>}  

等价于:

<span class="lnum">   1:  </span><span class="kwrd">return</span> <span class="kwrd">new</span> Ext.ux.MyGrid(config);  

然后实例化grid,进行渲染和显示。谨记:需要的时候才实例化

 

xtype            Class

————-    ——————

box              Ext.BoxComponent 具有边框属性的组件

button           Ext.Button 按钮

colorpalette     Ext.ColorPalette 调色板

component        Ext.Component 组件

container        Ext.Container 容器

cycle            Ext.CycleButton

dataview         Ext.DataView 数据显示视图

datepicker       Ext.DatePicker 日期选择面板

editor           Ext.Editor 编辑器

editorgrid       Ext.grid.EditorGridPanel 可编辑的表格

grid             Ext.grid.GridPanel 表格

paging           Ext.PagingToolbar 工具栏中的间隔

panel            Ext.Panel 面板

progress         Ext.ProgressBar 进度条

splitbutton      Ext.SplitButton 可分裂的按钮

tabpanel         Ext.TabPanel 选项面板

treepanel        Ext.tree.TreePanel 树

viewport         Ext.ViewPort 视图

window           Ext.Window 窗口

工具栏组件有

—————————————

toolbar          Ext.Toolbar 工具栏

tbbutton         Ext.Toolbar.Button 按钮

tbfill           Ext.Toolbar.Fill 文件

tbitem           Ext.Toolbar.Item 工具条项目

tbseparator      Ext.Toolbar.Separator 工具栏分隔符

tbspacer         Ext.Toolbar.Spacer 工具栏空白

tbsplit          Ext.Toolbar.SplitButton 工具栏分隔按钮

tbtext           Ext.Toolbar.TextItem 工具栏文本项

表单及字段组件包含:

—————————————

form             Ext.FormPanel Form面板

checkbox         Ext.form.Checkbox checkbox录入框

combo            Ext.form.ComboBox combo选择项

datefield        Ext.form.DateField 日期选择项

field            Ext.form.Field 表单字段

fieldset         Ext.form.FieldSet 表单字段组

hidden           Ext.form.Hidden 表单隐藏域

htmleditor       Ext.form.HtmlEditor html编辑器

numberfield      Ext.form.NumberField 数字编辑器

radio            Ext.form.Radio 单选按钮

textarea         Ext.form.TextArea 区域文本框

textfield        Ext.form.TextField 表单文本框

timefield        Ext.form.TimeField 时间录入项

trigger          Ext.form.TriggerField 触发录入项

Javascript判断文件大小

本人介绍使用javascript在客户端本地获得文件大小的几种方法。

方法一,利用ActiveX控件实现:

   1:  <script type="text/javascript">
   2:      function getFileSize(filePath) {
   3:          var fso = new ActiveXObject("Scripting.FileSystemObject");
   4:          alert("文件大小为:" + fso.GetFile(filePath).size);
   5:      }    
   6:  </script>
   7:  <body>
   8:      <input type="file" name="file" size="30" onchange="getFileSize(this.value);">
   9:  </body>

这个方法在IE可以用,不足之处会有安全提示,把文件名改为.hta则会屏蔽掉安全提示。

方法二,利用img的dynsrc属性:

   1:  <script type="text/javascript">
   2:      function getFileSize(filePath) {
   3:          var image = new Image();
   4:          image.dynsrc = filePath;
   5:          alert(image.fileSize);
   6:      }      
   7:  </script>
   8:  <body>
   9:      <input type="file" name="file" size="30" onchange="getFileSize(this.value)">
  10:  </body>

这个方法在IE6可以用,在IE7,IE8,Firefox,chrome不能用。

方法三,利用img的fileSize:

   1:  <script language="javascript">
   2:      var ImgObj = new Image();      //建立一个图像对象 
   3:      var AllImgExt = ".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型 
   4:      var FileObj, ImgFileSize, ImgWidth, ImgHeight, FileExt, ErrMsg, FileMsg, HasCheked, IsImg//全局变量 图片相关属性 
   5:      //以下为限制变量 
   6:      var AllowExt = ".jpg|.gif|.doc|.txt|" //允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示 
   7:      //var AllowExt=0 
   8:      var AllowImgFileSize = 70;    //允许上传图片文件的大小 0为无限制 单位:KB 
   9:      var AllowImgWidth = 500;      //允许上传的图片的宽度 ?为无限制 单位:px(像素) 
  10:      var AllowImgHeight = 500;      //允许上传的图片的高度 ?为无限制 单位:px(像素) 
  11:      HasChecked = false;
  12:      function CheckProperty(obj)    //检测图像属性 
  13:      {
  14:          FileObj = obj;
  15:          if (ErrMsg != "")      //检测是否为正确的图像文件 返回出错信息并重置 
  16:          {
  17:              ShowMsg(ErrMsg, false);
  18:              return false;      //返回 
  19:          }
  20:   
  21:          if (ImgObj.readyState != "complete") //如果图像是未加载完成进行循环检测 
  22:          {
  23:              setTimeout("CheckProperty(FileObj)", 500);
  24:              return false;
  25:          }
  26:   
  27:          ImgFileSize = Math.round(ImgObj.fileSize / 1024 * 100) / 100; //取得图片文件的大小 
  28:          ImgWidth = ImgObj.width      //取得图片的宽度 
  29:          ImgHeight = ImgObj.height;    //取得图片的高度 
  30:          FileMsg = "\n图片大小:" + ImgWidth + "*" + ImgHeight + "px";
  31:          FileMsg = FileMsg + "\n图片文件大小:" + ImgFileSize + "Kb";
  32:          FileMsg = FileMsg + "\n图片文件扩展名:" + FileExt;
  33:   
  34:          if (AllowImgWidth != 0 && AllowImgWidth < ImgWidth)
  35:              ErrMsg = ErrMsg + "\n图片宽度超过限制。请上传宽度小于" + AllowImgWidth + "px的文件,当前图片宽度为" + ImgWidth + "px";
  36:   
  37:          if (AllowImgHeight != 0 && AllowImgHeight < ImgHeight)
  38:              ErrMsg = ErrMsg + "\n图片高度超过限制。请上传高度小于" + AllowImgHeight + "px的文件,当前图片高度为" + ImgHeight + "px";
  39:   
  40:          if (AllowImgFileSize != 0 && AllowImgFileSize < ImgFileSize)
  41:              ErrMsg = ErrMsg + "\n图片文件大小超过限制。请上传小于" + AllowImgFileSize + "KB的文件,当前文件大小为" + ImgFileSize + "KB";
  42:   
  43:          if (ErrMsg != "")
  44:              ShowMsg(ErrMsg, false);
  45:          else
  46:              ShowMsg(FileMsg, true);
  47:      }
  48:   
  49:      ImgObj.onerror = function () { ErrMsg = '\n图片格式不正确或者图片已损坏!' }
  50:   
  51:      function ShowMsg(msg, tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容 
  52:      {
  53:          msg = msg.replace("\n", "<li>");
  54:          msg = msg.replace(/\n/gi, "<li>");
  55:          if (!tf) {
  56:              document.all.UploadButton.disabled = true;
  57:              FileObj.outerHTML = FileObj.outerHTML;
  58:              MsgList.innerHTML = msg;
  59:              HasChecked = false;
  60:          }
  61:          else {
  62:              document.all.UploadButton.disabled = false;
  63:              if (IsImg)
  64:                  PreviewImg.innerHTML = "<img src='" + ImgObj.src + "' width='60' height='60'>"
  65:              else
  66:                  PreviewImg.innerHTML = "非图片文件";
  67:              MsgList.innerHTML = msg;
  68:              HasChecked = true;
  69:          }
  70:      }
  71:   
  72:      function CheckExt(obj) {
  73:          ErrMsg = "";
  74:          FileMsg = "";
  75:          FileObj = obj;
  76:          IsImg = false;
  77:          HasChecked = false;
  78:          PreviewImg.innerHTML = "预览区";
  79:          if (obj.value == "") return false;
  80:          MsgList.innerHTML = "文件信息处理中...";
  81:          document.all.UploadButton.disabled = true;
  82:          FileExt = obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
  83:          if (AllowExt != 0 && AllowExt.indexOf(FileExt + "|") == -1) //判断文件类型是否允许上传 
  84:          {
  85:              ErrMsg = "\n该文件类型不允许上传。请上传 " + AllowExt + " 类型的文件,当前文件类型为" + FileExt;
  86:              ShowMsg(ErrMsg, false);
  87:              return false;
  88:          }
  89:   
  90:          if (AllImgExt.indexOf(FileExt + "|") != -1)    //如果图片文件,则进行图片信息处理 
  91:          {
  92:              IsImg = true;
  93:              ImgObj.src = obj.value;
  94:              CheckProperty(obj);
  95:              return false;
  96:          }
  97:          else {
  98:              FileMsg = "\n文件扩展名:" + FileExt;
  99:              ShowMsg(FileMsg, true);
 100:          }
 101:   
 102:      }
 103:   
 104:      function SwitchUpType(tf) {
 105:          if (tf)
 106:              str = '<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">'
 107:          else
 108:              str = '<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">'
 109:          document.all.file1.outerHTML = str;
 110:          document.all.UploadButton.disabled = true;
 111:          MsgList.innerHTML = "";
 112:      } 
 113:   
 114:  </script>
 115:  <form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;">
 116:  <fieldset style="width: 372; height: 60; padding: 2px;">
 117:      <legend><font color="#FF0000">图片来源</font></legend>
 118:      <input type="radio" name="radio1" checked onclick="SwitchUpType(true);">本地<input
 119:          type="radio" name="radio1" onclick="SwitchUpType(false);">远程:<input type="file" name="file1"
 120:              onchange="CheckExt(this)" style="width: 180px;">
 121:      <input type="submit" id="UploadButton" value="开始上传" disabled>
 122:      <div style="border: 1 solid #808080; background: #E0E0E0; width100%; height: 20px;
 123:          color: #606060; padding: 5px;">
 124:          <table border="0">
 125:              <tr>
 126:                  <td width="60" id="PreviewImg">
 127:                      预览区
 128:                  </td>
 129:                  <td id="MsgList" valign="top">
 130:                  </td>
 131:              </tr>
 132:          </table>
 133:      </div>
 134:  </fieldset>
 135:  </form>

在IE,FireFox,chrome都可以用,不过只判断图片文件的大小。