在安装PHPCMS出现Deprecated: Function set_magic_quotes_runtime() is deprecated 错误,查了一下网络及资料发现是PHP5.3和PHP6.0之后移除了set_magic_quotes_runtime()函数。 set_magic_quotes_runtime(0)函数作用解释 在php.ini的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。 为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始用get_magic_quotes_runtime检测设置状态秋决定是否要手工处理,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉。 magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的’”/加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(/)与 NUL(NULL 字符)。 解决办法: //@set_magic_quotes_runtime(0); ini_set(“magic_quotes_runtime”,0); 就是用ini_set()办法替代原有的set_magic_quotes_runtime语法。 转自:http://blog.csdn.net/nstwolf/article/details/5806616
View Details说到PHP环境配置与安装,通常以Apache搭载PHP配置为主,随着PHP版本不断更新,对Windows IIS平台的支持也越来越好,在Windows IIS平台上配置安装PHP环境也越来越方便。 在完成Windows 7上搭建Apache+PHP+Mysql环境搭建后,我在Windows 7 IIS7平台上对PHP5.2和PHP5.3进行了配置安装,PHP5.3之前版本在Windows IIS平台上的PHP配置方式主要以ISAPI方式进行,而PHP5.3支持IIS以FastCgi方式运行PHP,这两个PHP5版本的配置安装还是有不小的区别,下面详细介绍ISAPI和FastCgi两种方式在IIS上进行PHP配置的方法。 准备工作 在完成IIS上进行PHP5安装配置工作之前,首先需要下载PHP5.2和PHP5.3,PHP5.3以php-5.3.2-Win32-VC9-x86为准。 Windows7 IIS7安装 在进行IIS7 PHP安装配置之前,首先需要安装IIS7,Windows7默认并没有安装IIS,安装过程如下: 首先进入控制面板,点击程序和功能,再点击左侧打开和关闭Windows功能,勾选Internet Information Services可承载的Web核心,确定安装。 在完成安装后,在勾选Internet信息服务,选择安装必要的IIS功能,注意由于在配置PHP5.2和PHP5.3时,IIS7中是以ISAPI和FastCgi方式配置PHP的,所以Cgi和ISAPI扩展和ISAPI筛选器务必勾选(此处由于我首先以ISAPI方式配置PHP5.2,我没有勾选Cgi),如图: 安装IIS7 在完成Windows7 IIS7的安装后,即可在控制面板中的管理工具中看到Internet信息服务管理器选项。 ISAPI方式 第一步:php.ini配置 解压php-5.2.13-Win32-VC6-x86.zip,重命名为php52iis,将其复制到C盘根目录下,将php.ini-list文件名更改为php.ini,打开php.ini进行配置,注意extension_dir的目录指向必须准确,即 extension_dir = "C:/php52iis/ext" 另外在PHP5.2版本中没有date.timezone选项,所以无需设置。 在完成PHP5.2中php.ini的配置工作后,将其复制至C:WINDOWS目录下,同时将PHP52iis目录下的libmcrypt.dll,libmysql.dll,php5ts.dll三个文件到C:/windows/System32目录下。 第二步:以ISAPI方式配置PHP5.2 打开IIS,选择网站下的Default Web Site中的ISAPI筛选器进行PHP配置工作,即 添加ISAPI筛选器,选择PHP相应的DLL文件然后选择处理程序映射,进行添加脚本映射操作,即 在完成上述IIS7的PHP5配置后,有需要说明一下,默认IIS7下的网站,其绑定的端口为80端口,网站目录为%SystemDrive%inetpubwwwroot,如果你向我一样在此之前安装配置了Apache+PHP的环境,则需要修改默认网站绑定的端口及网站目录,如将80端口改为8080,网站目录指向D:PHPWeb。或者添加一个新网站,即先添加应用程序池,再添加一个网站。 添加默认文档 在完成新网站添加后,请确保处理程序映射中有添加的脚本映射,如果没有,请重复添加脚本映射操作即可。 第三步:重启IIS7服务器 在D:PHPWeb目录下新建一个index.php文件,内容如下 <? phpinfo(); ?> 在游览器中输入http://localhost:8080/,查看PHP5.2配置信息。 至此在Windows7 IIS7上安装配置PHP5.2就算完成了。 FastCgi方式 在Windows7 IIS7上配置PHP5.3,主要以FastCgi方式进行配置,大体上与PHP5.2的配置基本一样。首先解压php-5.3.2-Win32-VC9-x86,重命名为php53iis并将其复制到C盘根目录。 第一步:添加网站 具体添加过程请参考IIS PHP5.2的配置。 第二步:添加FastCgi模块映射 点击处理程序映射,进行添加模块操作,即 配置IIS以FastCgi方式运行PHP5.3 第三步:php.ini配置 首先将php.ini-development重命名为php.ini,并将 fastcgi.impersonate=1 默认为0,如果使用IIS,你需要开启 cgi.fix_pathinfo=1 cgi.force_redirect=0 默认开启,如果你使用IIS,可以将其关闭 其次指定extension_dir目录和date.timezone,即 extension_dir = "C:/php53iis/ext" date.timezone= Asia/Shanghai 其他PHP.INI配置与PHP5.2的配置一样,区别在于,在Windows7 IIS7上配置安装PHP时,并不需要将php.ini及其他文件复制到C:/windows及C:/windows/System32目录下,简单很多 第四步:重启IIS7服务器 同时访问http://localhost:8080/即可。 FastCGI进程意外退出如何解决? 在使用Windows7 IIS7进行PHP配置安装过程中,如果PHP配置不正确,会出现FastCGI进程意外退出出错信息,此时你可以在DOS下使用 C:php53iisphp.exe -v 进行调试查看,一般情况下会将PHP配置的错误信息报出,你只要根据此信息修改相关PHP配置即可。 至此在Windows7 IIS7平台上进行PHP5.2和PHP5.3的配置安装工作就介绍完了,应该讲随着PHP版本的提高,PHP的配置工作也越来越简单化。
View DetailsJquery.KinSlideshow参数设置说明: 附:所有参数列表 intervalTime:5, //设置间隔时间为5秒 【单位:秒】 [默认为5秒] moveSpeedTime:400 //切换一张图片所需时间,【单位:毫秒】[默认为400毫秒] moveStyle:”left”, //切换方向 可选值:【 left | right | up | down 】 //left:向左切换,right:向右切换,up:向上切换,down:向下切换 [默认向左切换] mouseEvent:”mouseclick”, //鼠标操作按钮事件,可选值:【mouseclick | mouseover】 //mouseclick:鼠标单击切换。mouseover:鼠标滑过切换。[默认为鼠标点击按钮切换] isHasTitleBar:true, //是否显示标题背景 可选值:【 true | false 】[默认为true] titleBar:{titleBar_height:40,titleBar_bgColor:”#000000″,titleBar_alpha:0.5}, //标题背景样式,(isHasTitleBar = true 前提下启用) titleBar_height :40 – > 标题背景高度。[默认:40] titleBar_bgColor:”#000000″ – > 标题背景颜色。[默认:#000000] titleBar_alpha:0.5 -> 标题背景透明度,取值【0~1】。[默认:0.5] isHasTitleFont:true, //是否显示标题文字 可选值:【 true | false 】[默认为true] titleFont:{TitleFont_size:12,TitleFont_color:”#FFFFFF”,TitleFont_family:”Verdana”,TitleFont_weight:”bold”}, //标题文字样式,(isHasTitleFont = true 前提下启用) TitleFont_size – > 标题文字大小 单位像素。[默认:12] TitleFont_color:”#FFFFFF” – > 标题文字颜色。[默认:#000000] TitleFont_family:”Verdana” -> 标题文字字体。[默认:Verdana] TitleFont_weight:”bold” -> 标题文字粗细。 //可选值:【 bold | normal 】[默认:"bold"] ,normal 正常 不加粗。 isHasBtn:true, //是否显示按钮 btn:{btn_bgColor:”#666666″,btn_bgHoverColor:”#CC0000″, btn_fontColor:”#CCCCCC”,btn_fontHoverColor:”#000000″,btn_fontFamily:”Verdana”, btn_borderColor:”#999999″,btn_borderHoverColor:”#FF0000″, btn_borderWidth:1,btn_bgAlpha:0.7} //按钮样式设置,(isHasBtn = true 前提下启用) btn_bgColor:”#666666″ -> 按钮背景颜色 [默认:"#666666"]。 btn_bgHoverColor:”#CC0000″ -> 按钮滑过/点击 背景颜色 [默认:"#CC0000"]。 btn_fontColor:”#CCCCCC” -> 按钮文字颜色 [默认:"#CCCCCC"]。 btn_fontHoverColor:”#000000″ -> 按钮滑过/点击 按钮文字颜色 [默认:"#000000"]。 btn_fontFamily:”Verdana”, -> 按钮文字字体 [默认:"Verdana"]。 btn_borderColor:”#999999″ -> 按钮边框颜色 [默认:"#999999"]。 btn_borderHoverColor:”#FF0000″ -> 按钮滑过/点击 按钮边框颜色 [默认:"#FF0000"]。 btn_borderWidth:1 -> 按钮边框宽度,单位像素不能超过3 [默认:1]。 btn_bgAlpha:0.7 -> 按钮透明度 ,取值【0~1】 [默认:0.7]。 【多项复合】参数调用说明 $(function(){ $(“#KinSlideshow”).KinSlideshow({ titleFont:{TitleFont_size:14,TitleFont_color:”#FF0000″} //设置标题文字大小为14px,颜色:#FF0000 【titleFont 其他未设置的 使用默认参数设置】 }); }) 转自:http://blog.sina.com.cn/s/blog_4f4f4a5901014zn1.html
View Detailsjavascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3、N2 鼠标点击时触发此事件 ondblclick IE4、N4 鼠标双击时触发此事件 onmousedown IE4、N4 按下鼠标时触发此事件 onmouseup IE4、N4 鼠标按下后松开鼠标时触发此事件 onmouseover IE3、N2 当鼠标移动到某对象范围的上方时触发此事件 onmousemove IE4、N4 鼠标移动时触发此事件 onmouseout IE4、N3 当鼠标离开某对象范围时触发此事件 onkeypress IE4、N4 当键盘上的某个键被按下并且释放时触发此事件. onkeydown IE4、N4 当键盘上某个按键被按下时触发此事件 onkeyup IE4、N4 当键盘上某个按键被按放开时触发此事件 页面相关事件 onabort IE4、N3 图片在下载时被用户中断 onbeforeunload IE4、N 当前页面的内容将要被改变时触发此事件 onerror IE4、N3 出现错误时触发此事件 onload IE3、N2 页面内容完成时触发此事件 onmove IE、N4 浏览器的窗口被移动时触发此事件 onresize IE4、N4 当浏览器的窗口大小被改变时触发此事件 onscroll IE4、N 浏览器的滚动条位置发生变化时触发此事件 onstop IE5、N 浏览器的停止按钮被按下时触发此事件或者正在下载的文件被中断 onunload IE3、N2 当前页面将被改变时触发此事件 表单相关事件 onblur IE3、N2 当前元素失去焦点时触发此事件 onchange IE3、N2 当前元素失去焦点并且元素的内容发生改变而触发此事件 onfocus IE3 、N2 当某个元素获得焦点时触发此事件 onreset IE4 、N3 当表单中RESET的属性被激发时触发此事件 onsubmit IE3 、N2 一个表单被递交时触发此事件 滚动字幕事件 onbounce IE4、N 在Marquee内的内容移动至Marquee显示范围之外时触发此事件 onfinish IE4、N 当Marquee元素完成需要显示的内容后触发此事件 onstart […]
View Details一、【文件(F)】菜单中的命令的实现 1、〖打开〗命令的实现 [格式]:document.execCommand(“open”) [说明]这跟VB等编程设计中的webbrowser控件中的命令有些相似,大家也可依此琢磨琢磨。 [举例]在<body></body>之间加入: 打开 2、〖使用 记事本 编辑〗命令的实现 [格式]:location.replace(“view-source:”+location) [说明]打开记事本,在记事本中显示该网页的源代码。 [举例]在<body></body>之间加入: 使用 记事本 编辑 3、〖另存为〗命令的实现 [格式]:document.execCommand(“saveAs”) [说明]将该网页保存到本地盘的其它目录! [举例]在<body></body>之间加入: 另存为 4、〖打印〗命令的实现 [格式]:document.execCommand(“print”) [说明]当然,你必须装了打印机! [举例]在<body></body>之间加入: 打印 5、〖关闭〗命令的实现 [格式]:window.close();return false [说明]将关闭本窗口。 [举例]在<body></body>之间加入: 关闭本窗口 二、【编辑(E)】菜单中的命令的实现 〖全选〗命令的实现 [格式]:document.execCommand(“selectAll”) [说明]将选种网页中的全部内容! [举例]在<body></body>之间加入: 全选 三、【查看(V)】菜单中的命令的实现 1、〖刷新〗命令的实现 [格式]:location.reload() 或 history.go(0) [说明]浏览器重新打开本页。 [举例]在<body></body>之间加入: 刷新 或加入:刷新 2、〖源文件〗命令的实现 [格式]:location.replace(“view-source:”+location) [说明]查看该网页的源代码。 [举例]在<body></body>之间加入: 查看源文件 3、〖全屏显示〗命令的实现 [格式]:window.open(document.location,”url”,”fullscreen”) [说明]全屏显示本页。 [举例]在<body></body>之间加入: 全屏显示 四、【收藏(A)】菜单中的命令的实现 1、〖添加到收藏夹〗命令的实现 [格式]:window.external.AddFavorite(‘url’, ‘“网站名”) [说明]将本页添加到收藏夹。 [举例]在<body></body>之间加入: 添加到收藏夹 2、〖整理收藏夹〗命令的实现 [格式]:window.external.showBrowserUI(“OrganizeFavorites”,null) [说明]打开整理收藏夹对话框。 [举例]在<body></body>之间加入: 整理收藏夹 五、【工具(T)】菜单中的命令的实现 〖internet选项〗命令的实现 [格式]:window.external.showBrowserUI(“PrivacySettings”,null) [说明]打开internet选项对话框。 [举例]在<body></body>之间加入: internet选项 六、【工具栏】中的命令的实现 1、〖前进〗命令的实现 [格式]history.go(1) 或 history.forward() [说明]浏览器打开后一个页面。 [举例]在<body></body>之间加入: 前进 或加入:前进 2、〖后退〗命令的实现 [格式]:history.go(-1) 或 history.back() [说明]浏览器返回上一个已浏览的页面。 [举例]在<body></body>之间加入: 后退 或加入:后退 3、〖刷新〗命令的实现 [格式]:document.reload() 或 history.go(0) [说明]浏览器重新打开本页。 [举例]在<body></body>之间加入: 刷新 或加入:刷新 七、其它命令的实现 〖定时关闭本窗口〗命令的实现 […]
View Details一、showModalDialog和showModelessDialog有什么不同? showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。 showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P) 二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口? 在被打开的网页里加上<base target=”_self”>就可以了。这句话一般是放在<html>和<body>之间的。 三、怎样才刷新showModalDialog和showModelessDialog里的内容? 在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码: <body onkeydown=”if (event.keyCode==116){reload.click()}”> <a id=”reload” href=”filename.htm” style=”display:none”>reload…</a> 将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target=”_self”>使用,不然你按下F5会弹出新窗口的。 四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。 <input type=”button” value=”关闭” onclick=”window.close()”> 也要配合<base target=”_self”>,不然会打开一个新的IE窗口,然后再关掉的。 五、showModalDialog和showModelessDialog数据传递技巧。 (作者语:本来想用一问一答形式来写的,但是我想不出这个怎么问,所以只好这样了。) 这个东西比较麻烦,我改了好几次了不是没办法说明白(语文水平越来越差了),只好用个例子说明了。 例子: 现在需要在一个showModalDialog(或showModelessDialog)里读取或设置一个变量var_name 一般的传递方式: window.showModalDialog(“filename.htm”,var_name) //传递var_name变量 在showModalDialog(或showModelessDialog)读取和设置时: alert(window.dialogArguments)//读取var_name变量 window.dialogArguments=”oyiboy”//设置var_name变量 这种方式是可以满足的,但是当你想在操作var_name同时再操作第二个变理var_id时呢?就无法再进行操作了。这就是这种传递方式的局限性。 以下是我建议使用的传递方式: window.showModalDialog(“filename.htm”,window) //不管要操作什么变量,只直传递主窗口的window对象 在showModalDialog(或showModelessDialog)读取和设置时: alert(window.dialogArguments.var_name)//读取var_name变量 window.dialogArguments.var_name=”oyiboy”//设置var_name变量 同时我也可以操作var_id变量 alert(window.dialogArguments.var_id)//读取var_id变量 window.dialogArguments.var_id=”001″//设置var_id变量 同样还可以对主窗口的任何对象进行操作,如form对象里的元素。 window.dialogArguments.form1.index1.value=”这是在设置index1元素的值” 六、多个showModelessDialog的相互操作。 因为光说很费劲,我就偷点懒,直接用代码来说了,如果不明白的话那就直接来信(oyiboy#163.net(使用时请将#改成@))问我吧。 以下代码的主要作用是在一个showModelessDialog里移动别一个showModelessDialog的位置。 主文件的部份js代码。 var s1=showModelessDialog(”控制.htm”,window,”dialogTop:1px;dialogLeft:1px”) //打开控制窗口 var s2=showModelessDialog(”about:blank”,window,”dialogTop:200px;dialogLeft:300px”) //打开被控制窗口 控制.htm的部份代码。 <script> //操作位置数据,因为窗口的位置数据是”xxxpx”方式的,所以需要这样的一个特殊操作函数。 function countNumber(A_strNumber,A_strWhatdo) { A_strNumber=A_strNumber.replace(”px”,””) A_strNumber-=0 switch(A_strWhatdo) { case “-”:A_strNumber-=10;break; case “+”:A_strNumber+=10;break; } return A_strNumber + “px” } </script> <input type=”button” onclick=”window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,”-”)” value=”上移”> <input type=”button” onclick=”window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,”-”)” value=”左移”> <input type=”button” onclick=”window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,”+”)” value=”右移”> <input type=”button” onclick=”window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,”+”)” value=”下移”> 以上关键部份是: 窗口命名方式:var s1=showModelessDialog(”控制.htm”,window,”dialogTop:1px;dialogLeft:1px”) 变量访问方式:window.dialogArguments.s2.dialogTop 这个例子只是现实showModelessDialog与showModelessDialog之间的位置操作功能,通过这个原理,在showModelessDialog之间相互控制各自的显示页面,传递变量和数据等。这要看各位的发挥了
View Details下面是我整理的一些userAgent大家先看看格式 //Firefox 1.0.X Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 //Firefox 1.X Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8) Gecko/20060109 Firefox/1.5 (pigfoot) Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060115 Firefox/1.6a1 //Firefox 2.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 //苹果的Safari 2.0.X Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8 在Windows XP SP2 下, IE7 将发送其 User-Agent 头为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) 在Windows 2003 Server 下, IE7 将发送其 User-Agent 头为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2) 在Windows Vista 下, IE7 将发送其 User-Agent 头为: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) 我的机器的 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Maxthon 傲游 1.x 系列的 UserAgent 值是 “Maxthon”,傲游 2.0 的 UserAgent 值是 “Maxthon 2.0″。所以只需要通过程序在 User-Agent 字符串中查找是否出现 “Maxthon” 或者 “Maxthon 2.0″ Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322) Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Maxthon 2.0) 其他的 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2) 一般来讲只需要判断浏览器的内核就可以了 像遨游1.X版本腾讯的TT浏览器都是IE6的核心 如果没有特殊需要可以不加区分 下面的例子只按浏览器核心判断是那种浏览器 //获取userAgent var sUserAgent = window.navigator.userAgent; //获取红色字体的部分Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) var fAppVersion = parseFloat(window.navigator.appVersion); //比较版本大小后面的程序会用到,如果不熟悉split和push方法请参照《JavaScript学习笔记1:Array类》 function compareVersions(sVersion1, sVersion2) { var aVersion1 = sVersion1.split(“.”); var aVersion2 = sVersion2.split(“.”); if (aVersion1.length > aVersion2.length) { for (var i = 0; i < aVersion1.length – aVersion2.length; i++) { aVersion2.push(“0″); } } else if (aVersion1.length < aVersion2.length) { for (var i = 0; i < aVersion2.length – aVersion1.length; i++) { aVersion1.push(“0″); } } for (var i = 0; i < aVersion1.length; i++) { if (aVersion1[i] < aVersion2[i]) { return -1; } else if (aVersion1[i] > aVersion2[i]) { return 1; } } return 0; } //判断userAgent字符串里面是否有Opera字段,有则设isOpera为true,下面还会用到 var isOpera = sUserAgent.indexOf(“Opera”) > -1; var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false; if (isOpera) { var fOperaVersion; //Opear可以伪装成其他的浏览器,这里判断的是没有伪装的 if (window.navigator.appName == “Opera”) { fOperaVersion = fAppVersion; } //这里判断的是伪装后的(某些伪装情况下在userAgent中不会出现Opera字样对这种情况我们无能为力,不过毕竟是极少 //数),关于Opera的伪装请自己查看相关资料 else { //这个有点难度了关于正则表达式的 //我们要匹配的部分(红色字体) User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; -?) Opera 7.60 var reOperaVersion = new RegExp(“Opera (\\d+\\.\\d+)”); reOperaVersion.test(sUserAgent); //RegExp["$1"]取出第一次匹配的结果,转换成浮点型 //Opera 7.60 这个是匹配结果,转换成浮点后只剩下数字部分7.60,刚好是我们想要的结果 fOperaVersion = parseFloat(RegExp["$1"]); } //目前最新版本为9.20,请自行添加 isMinOpera4 = fOperaVersion >= 4; isMinOpera5 = fOperaVersion >= 5; isMinOpera6 = fOperaVersion >= 6; isMinOpera7 = fOperaVersion >= 7; isMinOpera7_5 = fOperaVersion >= 7.5; } var isKHTML = sUserAgent.indexOf(“KHTML”) > -1 || sUserAgent.indexOf(“Konqueror”) > -1 || sUserAgent.indexOf(“AppleWebKit”) > -1; var isMinSafari1 = isMinSafari1_2 = false; var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false; if (isKHTML) { var isSafari = sUserAgent.indexOf(“AppleWebkit”) > -1; var isKonq = sUserAgent.indexOf(“Konqueror”) > -1; //MacOS X的默认浏览器,基于KHTML,参考前面给出的userAgent if (isSafari) { var reAppleWebKit = new RegExp(“AppleWebKit\\/(\\d+(?:\\.\\s*)?)”); reAppleWebKit.test(sUserAgent); var fApplieWebKitVersion = parseFloat(RegExp["$1"]); isMinSafari1 = fApplieWebKitVersion >= 85; isMinSafari1_2 = fApplieWebKitVersion >= 124; } //判断是否是Konqueror浏览器,Unix下的浏览器,基于KHTML else if(isKonq) { var reKong = new RegExp(“Konqueror\\/(\\s+(?:\\.\\d+(?:\\.\\d)?)?)”); reKong.test(sUserAgent); isMinKonq2_2 = compareVersions(RegExp["$1"], “2.2″) >= 0; isMinKonq3 = compareVersions(RegExp["$1"], “3.0″) >= 0; isMinKonq3_1 = compareVersions(RegExp["$1"], “3.1″) >= 0; isMinKonq3_2 = compareVersions(RegExp["$1"], “3.2″) >= 0; } } //IE var isIE = sUserAgent.indexOf(“compatible”) > -1 && sUserAgent.indexOf(“MSIE”) > -1 && !isOpera; var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIe6 = false; if (isIE) { var reIE = new RegExp(“MSIE (\\d+\\.\\d+)”); reIE.test(sUserAgent); var fIEVersion = parseFloat(RegExp["$1"]); isMinIE4 = fIEVersion >= 4; isMinIE5 = fIEVersion >= 5; isMinIE5_5 = fIEVersion >= 5.5; isMinIE6 = fIEVersion >= 6.0; } //Mozilla,火狐数此类 var isMoz = sUserAgent.indexOf(“Gecko”) > -1 && !isKHTML; var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false; if (isMoz) { //最新的版本号是4个标志位的了,这里应该把正则表达式改成”rv:(\\d+\\.\\d+(?:\\.\\d+(?:\\.\\d+)?)?)” var reMoz = new RegExp(“rv:(\\d+\\.\\d+(?:\\.\\d+)?)); reMoz.test(sUserAgent); //调用前面比较版本的方法 isMinMoz1 = compareVersions(RegExp["$1"], “1.0″) >= 0; isMinMoz1_4 = compareVersions(RegExp["$1"], “1.4″) >= 0; isMinMoz1_5 = compareVersions(RegExp["$1"], “1.5″) >= 0; } //Netscape var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML && (sUserAgent.indexOf(“Mozilla”) == 0) && (navigator.appName == “Netscape”) && (fAppVersion >= 4.0 && fAppVersion < 5.0); var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false; if (isNS4) { isMinNS4 = true; isMinNs4_5 = fAppVersion >= 4.5; isMinNs4_7 = fAppVersion >= 4.7; isMinNs4_8 = fAppVersion >= 4.8; } var isWin = (window.navigator.platform == “Win32″) || (window.navigator.platform == “Windows”); var isMac = (window.navigator.platform == “Mac68K”) || (window.navigator.platform == “MacPPC”) || (window.navigator.platform == “Macintosh”); var isUnix = (window.navigator.platform == “X11″) && isWin && isMac; var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false; var isMac68K = isMacPPC = false; var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false; if (isWin) { //Win2003为Windows NT 5.2 //那个vista是Windows NT 6.0 isWin95 = sUserAgent.indexOf(“Win95″) >= -1 || sUserAgent.indexOf(“Windows 95″) >= -1; isWin98 = sUserAgent.indexOf(“Win98″) >= -1 || sUserAgent.indexOf(“Windows 98″) >= -1; isWinME = sUserAgent.indexOf(“Win 9x 4.90″) >= -1 || sUserAgent.indexOf(“Windows ME”) >= -1; isWin2K = sUserAgent.indexOf(“Windows NT 5.0″) >= -1 || sUserAgent.indexOf(“Windows 2000″) >= -1; isWinXP = sUserAgent.indexOf(“Windows NT 5.1″) >= -1 || sUserAgent.indexOf(“Windows XP”) >= -1; isWinNT4 = sUserAgent.indexOf(“WinNT”) >= -1 || sUserAgent.indexOf(“WindowsNT”) >= -1 || sUserAgent.indexOf(“WinNT4.0″) >= -1 || sUserAgent.indexOf(“Windows NT 4.0″) && (!isWinME && !isWin2K && !isWinXP); } if (isMac) { isMac68K = sUserAgent.indexOf(“Max_68000″) > -1 || sUserAgent.indexOf(“68K”) > -1; isMacPPC = sUserAgent.indexOf(“Mac_PowerPC”) > -1 || sUserAgent.indexOf(“PPC”) > -1; } //Unix的系统太多了 这里只对SunOS做了判断 if (isUnix) { isSunOS = sUserAgent.indexOf(“SunOS”) > -1; if (isSunOS) { var reSunOS = new RegExp(“SunOS (\\d+\\.\\d+(?:\\.\\d+)?)”); reSunOS.test(sUserAgent); isMinSunOS4 = compareVersions(RegExp["$1"], “4.0″) >= 0; isMinSunOS5 = compareVersions(RegExp["$1"], “5.0″) >= 0; isMinSunOS5_5 = compareVersions(RegExp["$1"], “5.5″) >= 0; } } 注意:上面的对操作系统和浏览器判断的先后顺序是不能改变的,类似于排除法 现在好多的Ajax框架里都有这个东东可以拿来直接用, 写的有点匆忙,后面很多地方和前面用的方法相同就没有复述 如果你和我一样是新手欢迎和我交流,我的邮箱是zyyn2000【at】21cn.com,最近正在学ASP.NET Ajax相关的技术,也请高手指点 如果你想看自己的userAgent在浏览器上敲这个就可以了^_^ javascript:document.write(navigator.userAgent) 这个东西我还写了一个C#版的,方便一次性识别大量的userAgent^_^ 我的作文很少及格写的不好大家见笑了,欢迎批评指正。 国际惯例:如需转载请注明出处,谢谢. from url:http://www.cnblogs.com/Ajax-cn/archive/2007/04/24/725334.html
View Detailssubstring 方法用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 参数 描述start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。stop 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。 返回值 一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。 说明 substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。如果 start 或 end 为负数,那么它将被替换为 0。 2.substr 方法 定义和用法 substr 方法用于返回一个从指定位置开始的指定长度的子字符串。 语法 stringObject.substr(start [, length ]) 参数 描述start 必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。length 可选。在返回的子字符串中应包括的字符个数。 说明 如果 length 为 0 或负数,将返回一个空字符串。如果没有指定该参数,则子字符串将延续到stringObject的最后。 举例:var str = “0123456789″; alert(str.substring(0));————”0123456789″alert(str.substring(5));————”56789″alert(str.substring(10));———–”"alert(str.substring(12));———–”"alert(str.substring(-5));———–”0123456789″alert(str.substring(-10));———-”0123456789″alert(str.substring(-12));———-”0123456789″alert(str.substring(0,5));———-”01234″alert(str.substring(0,10));———”0123456789″alert(str.substring(0,12));———”0123456789″alert(str.substring(2,0));———-”01″alert(str.substring(2,2));———-”"alert(str.substring(2,5));———-”234″alert(str.substring(2,12));———”23456789″alert(str.substring(2,-2));———”01″alert(str.substring(-1,5));———”01234″alert(str.substring(-1,-5));——–”" alert(str.substr(0));—————”0123456789″alert(str.substr(5));—————”56789″alert(str.substr(10));————–”"alert(str.substr(12));————–”"alert(str.substr(-5));————–”0123456789″alert(str.substr(-10));————-”0123456789″alert(str.substr(-12));————-”0123456789″alert(str.substr(0,5));————-”01234″alert(str.substr(0,10));————”0123456789″alert(str.substr(0,12));————”0123456789″alert(str.substr(2,0));————-”"alert(str.substr(2,2));————-”23″alert(str.substr(2,5));————-”23456″alert(str.substr(2,12));————”23456789″alert(str.substr(2,-2));————”"alert(str.substr(-1,5));————”01234″alert(str.substr(-1,-5));———–”" http://www.cnblogs.com/chinafine/archive/2009/02/26/1398771.html
View Details1.执行时间window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。2.编写个数不同window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个$(document).ready()可以同时编写多个,并且都可以得到执行3.简化写法window.onload没有简化写法$(document).ready(function(){})可以简写成$(function(){});
View Details有很多 jQuery 的表单插件。这里收集了其中15个是最有用的插件。 ALAJAX (Ajaxify your HTML form) 该插件可轻松将你的表单变成 Ajax 方式处理,阻止了提交动作,然后通过 Ajax 方式提交。 jQuery File Upload (AJAX Upload with progress and more) Niceforms 这是一个让表单变得好看的 jQuery 插件 Fancy AJAX Contact Form meioMask (Input field mask plugin) 编辑框的输入模式限制插件 Elastic (expanding textarea) jQuery Elastic 是一个用来根据Textarea文本编辑框输入的数据自动改变输入框大小的jQuery插件。 Live Form Validation Custom Select Box (options with images) 为下拉列表增加图标显示 Pretty Checkbox 美化复选框 jQuery UI Datepicker Complexify (password strength) jQuery Form Field Validation A cool form validation with tooltips. Ketchup (form validation plugin) 带工具提示的表单验证 Valid8 Simple and cool validation plugin. jQuery qTip (tooltip plugin)
View Details