javascript实用代码

2010年9月2日 lenomon 2 条评论

1、彻底屏蔽鼠标右键,可用于Table

<table border oncontextmenu=return(false)><td>no</table>

2、取消选取、防止复制

<body onselectstart="return false">

3、禁用复制、粘贴、剪切

onpaste="return false" oncopy="return false;" oncut="return false;"

4、在收藏夹中显示出你的图标

<link rel="Bookmark" href="favicon.ico">

5、关闭输入法

<input style="ime-mode:disabled">

6、永远都会带着框架

<script language="JavaScript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页   
// -->
</script>

7、防止被人frame

<SCRIPT LANGUAGE=JAVASCRIPT><!--
if (top.location != self.location)top.location=self.location;
// -->
</SCRIPT>

8、网页将不能被另存为

<noscript><iframe src=*.html></iframe></noscript>

9、查看网页源代码

<input type=button value=查看网页源代码 onclick="window.location = 'view-source:http://www.pconline.com.cn'">

10、光标是停在文本框文字的最后

<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart("character",e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

11、最小化、最大化、关闭窗口

<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" VALUE="Close"></OBJECT>
<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>

12、网页不会被缓存

<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">或者<META HTTP-EQUIV="expires" CONTENT="0">

13、去掉图片链接点击后,图片周围的虚线

<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>

14、在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动

<STYLE>
body{background-image:url(logo.gif); background-repeat:no-repeat;background-position:center;background-attachment: fixed}
</STYLE>

15、TEXTAREA自适应文字行数

<textarea rows=1 name=s1 cols=27 onpropertychange=
"this.style.posHeight=this.scrollHeight"></textarea>

16、脚本永不出错

<SCRIPT LANGUAGE="JavaScript">
<!-- Hide
function killErrors() {
return true;
}
window.onerror = killErrors;
// --> 
</SCRIPT>

17、ENTER键可以让光标移到下一个输入框

<input onkeydown="if(event.keyCode==13)event.keyCode=9">

18、网页是否被检索

<meta name="ROBOTS" content="属性值">
  其中属性值有以下一些:
  属性值为"all": 文件将被检索,且页上链接可被查询;
  属性值为"none": 文件不被检索,而且不查询页上的链接;
  属性值为"index": 文件将被检索;
  属性值为"follow": 查询页上的链接;
  属性值为"noindex": 文件不检索,但可被查询链接;
  属性值为"nofollow": 文件不被检索,但可查询页上的链接。

19、格式化数字

/**
 * 格式化数字显示方式
 * @param num
 * @param pattern  '#,##0.00' '#,##0.##' '000000'
 */
function formatNumber(num,pattern){
  var strarr = num?num.toString().split('.'):['0'];
  var fmtarr = pattern?pattern.split('.'):[''];
  var retstr='';   

  // 整数部分   
  var str = strarr[0];
  var fmt = fmtarr[0];
  var i = str.length-1;
  var comma = false;
  for(var f=fmt.length-1;f>=0;f--){
    switch(fmt.substr(f,1)){
      case '#':
        if(i>=0 ) retstr = str.substr(i--,1) + retstr;
        break;
      case '0':
        if(i>=0) retstr = str.substr(i--,1) + retstr;
        else retstr = '0' + retstr;
        break;
      case ',':
        comma = true;
        retstr=','+retstr;
        break;
    }
  }
  if(i>=0){
    if(comma){
      var l = str.length;
      for(;i>=0;i--){
        retstr = str.substr(i,1) + retstr;
        if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;
      }
    }
    else retstr = str.substr(0,i+1) + retstr;
  }   

  retstr = retstr+'.';
  // 处理小数部分   
  str=strarr.length>1?strarr[1]:'';
  fmt=fmtarr.length>1?fmtarr[1]:'';
  i=0;
  for(var f=0;f<fmt.length;f++){
    switch(fmt.substr(f,1)){
      case '#':
        if(i<str.length) retstr+=str.substr(i++,1);
        break;
      case '0':
        if(i<str.length) retstr+= str.substr(i++,1);
        else retstr+='0';
        break;
    }
  }
  return retstr.replace(/^,+/,'').replace(/\.$/,'');
}

20、时间验证

function isCorrectTime(str){ //like:13:04:06
    var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) {alert('输入的参数不是时间格式'); return false;}
    if (a[1]>24 || a[3]>60 || a[4]>60){
        alert("时间格式不对");
        return false
     }
     return true;
}
function isCorrectDate(str){ //2003-12-05
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(r==null)return false;
    var d= new Date(r[1], r[3]-1, r[4]);
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
function isCorrectDateTime(str){ //2003-12-05 13:04:06
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if(r==null)return false;
    var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}

21、添加到收藏夹

window.external.AddFavorite('http://www.orgcent.com');

22、模态对话框

<input type="button" value="打开对话框" onclick="showDialog('#')"/>
  <SCRIPT LANGUAGE="JavaScript">
  <!--
  function  showDialog(url){
   if(document.all){//IE
     feature="dialogWidth:300px;dialogHeight:200px;status:no;help:no";
   window.showModalDialog(url,null,feature);
   }else{
     //modelessDialog可以将modal换成dialog=yes   
   feature ="width=300,height=200,menubar=no,toolbar=no,location=no,";
   feature+="scrollbars=no,status=no,modal=yes";
   window.open(url,null,feature);
   }
  }
  //-->   
</SCRIPT>

23、屏蔽打印按钮

<style type="text/css">
<!--
@media print { .disp{display: none;}}
-->
</style>

24、动态改变CSS

function changeLinkCss(url){
	var link_css=document.getElementsByTagName('link');
	for(var i=0;i<link_css.length;i++){
		if(link_css[i].rel.toLowerCase() == 'stylesheet'){
			link_css[i].href = url;
		}
	}
}

25、获得当前目录路径

function getCurrentDirectory(){
var locHref = location.href;
var locArray = locHref.split("/");
/**这里测试locArray效果**
    for(x in locArray){
      document.write("locArray[");
      document.write(x+"]: ");
      document.write(locArray[x]+"<br />");
    }
    **/
    delete locArray[locArray.length-1];
    var dirTxt = locArray.join("/");
    return dirTxt;
}
document.write(getCurrentDirectory());

26、置下一元素焦点

function setNextFocus(){
    var srcObj = event.srcElement;
	var len = document.all.length;
	var idx = -1;
	for(var i=0; i<len; i++){
	    var curObj = document.all[i];
		if(curObj == srcObj){
			idx = i;
			break;
		}
	}
	if(idx != -1 && idx < len-1){
		for(var j=idx+1 ;j<len;j++){
			if(checkTags(document.all[j])){
				document.all[j].focus();
				return;
			}
		}
	}
}
function checkTags(obj){
	if(obj.readOnly == true || obj.disabled == true) {return false;}
    var tag_name = obj.tagName;
   	var el_tags = ['select','input','textarea'];
	for(var i=0; i<el_tags.length; i++){
		if(el_tags[i] == tag_name.toLowerCase()){
			return true;
		}
	}
	return false;
}

27、javascript之可变参数arguments

使用JavaScript函数内置的arguments可以遍历所有传入的参数。arguments有个callee属性,可以调用arguments自身所在的函数。也就是说,可以通过这个属性递归调用函数自身

function sum() {
    var total = 0;
    for(var i = 0; i < arguments.length; i++) {
        total += arguments[i];
    }
    alert(total);
}
sum(1, 2);
sum(1, 2, 3);

function sum(n) {
    if(n <= 1) {
        return 1;
    }
    return n + arguments.callee(n - 1); // 递归调用自身   
}
alert(sum(100));

28、document.execCommand()

<input type=button value=剪切 onclick=document.execCommand('Cut')>
<input type=button value=拷贝 onclick=document.execCommand('Copy')>
<input type=button value=粘贴 onclick=document.execCommand('Paste')>
<input type=button value=撤消 onclick=document.execCommand('Undo')>
<input type=button value=重做 onclick=document.execCommand('Redo')>
<input type=button value=删除 onclick=document.execCommand('Delete')>
<input type=button value=黑体 onclick=document.execCommand('Bold')>
<input type=button value=斜体 onclick=document.execCommand('Italic')>
<input type=button value=下划线 onclick=document.execCommand('Underline')>
<input type=button value=停止 onclick=document.execCommand('stop')>
<input type=button value=保存 onclick=document.execCommand('SaveAs')>
<input type=button value=另存为 onclick=document.execCommand('Saveas',false,'c:\\test.htm')>
<input type=button value=字体 onclick=document.execCommand('FontName',false,fn)>
<input type=button value=字体大小 onclick=document.execCommand('FontSize',false,fs)>
<input type=button value=刷新 onclick=document.execCommand('refresh',false,0)>

isNaN是测试是否为数值型 ,限制输入只能为数值如:1981.121,允许最多有一个小数点

<input type=”text” name=”text” onkeyup=”if(isNaN(value))execCommand(‘undo’)” />

29、取消事件冒泡

event.cancelBubble=true;

30、禁止选择文字

<div unselectable="on" onselectstart="return false;" style="-moz-user-select:none;" >禁止选择,unselectable为IE准备 , onselectstart为Chrome、Safari准备    -moz-user-select是FF的 </div>

31、js释放内存

System.gc = function(){
    if(System.isIeBrowser())
    {
      CollectGarbage();
      setTimeout("CollectGarbage();",   1);
    }
 }

32、QVOD播放器代码

<object classid="clsid:F3D0D36F-23F8-4682-A195-74C92B03D4AF" width="500" height="400" id="QvodPlayer" name="QvodPlayer" onError=if(window.confirm('请您先安装QvodPlayer软件,然后刷新本页才可以正常播放.')){window.open('http://www.qvod.com/download.htm')}else{self.location='http://www.qvod.com/'}>
   <PARAM NAME='URL'
          VALUE='此处请替换成QVOD播放链接地址'>
   <PARAM NAME='Autoplay' VALUE='1'>
</object>

33、图片旋转

function imageTurn(id,filter){//水平:"fliph"与垂直:"flipV"
	var img = document.getElementById(id);
	img.style.filter = img.style.filter ==filter ? "" : filter;
}

34、滤镜RevealTrans (duration=转换的秒数,transition=转换的类型)

transition的取值为0-23。代表24种过渡效果。可以用在整个页面上,也可以用在页面的某一个物件上。

<META http-equiv='Page-Exit’ CONTENT='RevealTrans(Duration=0.5,Transition=23)'>

<img id="img1" src="img1.jpg" width="300" height="226" style="filter:revealTrans(Transition=1,Duration=1.5);" />

35、不提示关闭窗口

function closeWindow(){
  window.opener=null;
  window.open('','_self');
  window.close();
}

36、不用eval,解析JSON

function jsonDecode(data){
    return (new Function("return " + data))();
}

其他要想实现类似eval的功能,在DOM中创建一个script节点,然后script.text = data;

感谢:http://log-cd.javaeye.com

标签:

Redhat4下Oracle 10g安装及自启动配置

2010年9月2日 lenomon 没有评论

花了两天时间给在公司内部服务器上装了个Redhat 4 for Oracle(oracle内部Linux系统)和Oracle 10g,由于是首次成功在真实的服务器上安装Redhat 和 Oracle,所以在此记录下安装时需要注意的几个关键点!

呵呵,相信以后一定有用!

ps:Redhat linux在这里就不谈,oracle的安装也是借鉴了Oracle官网的10g数据库安装方案。

看看我都写了些啥!

一、检查安装环境

内存 至少512M grep MemTotal /proc/meminfo

交换分区 至少1G grep SwapTotal /proc/meminfo

/tmp 目录空闲区 至少400M df –h /tmp

硬盘空闲区 至少4G df –h

检查/etc/hosts 是否含有127.0.0.1 localhost 如果没有的话, oracle 的监听器无法启动

二、查看所需软件包是否安装

要查看系统上安装了这些程序包的哪些版本,以 root 用户身份运行以下命令:

rpm -q gcc make binutils openmotif setarch compat-db compat-gcc \
compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel

三、创建oracle用户和相关组

groupadd oinstall
groupadd dba
useradd –m –g oinstall –G dba oracle
id oracle
passwd oracle

四、检查或配置Linux内核参数

如果内核参数全部采用默认值,则只需在以 root 用户身份登录后执行下命令:
cat >> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
EOF
/sbin/sysctl –p
以 root 用户身份运行以下命令来验证您的设置:
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range

五、给Oracle 用户设置Shell 限制

为Linux帐户可使用的进程数和打开的文件数进行限制。要进行这些更改,以 root身份执行下列命令:
cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF

六、安装Oracle 10g

必须以oracle身份登陆xwindow,运行安装目录下的runInstaller
./runInstaller

七、Oracle10g自启动脚本设置

1、 修改/etc/oratab文件, orcl:/u01/product/10.2.0/db_1:N,最后一个字符'N’,改为'Y’
2、 修改$ORACLE_HOME/bin/dbstart,找到其中第78行:ORACLE_HOME_LISTNER=改为安装路径,
    或改成ORACLE_HOME_LISTNER=$ORACLE_HOME
3、 运行dbshut和dbstart看是否能关闭、启动数据库
4、 用root编辑/etc/rc.local,添加下面行:
    ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
    su - oracle -c "$ORACLE_HOME/bin/dbstart"
    su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
5、reboot验证即可
标签: , ,

Passware Kit重置Windows管理员密码

2010年8月20日 lenomon 48 条评论

由于装了windows 7和windows xp两个系统,没办法windows7兼容性差,loadrunner9.5不支持录制、运行场景等。

想切换到xp来运行loadrunner,没想到比较悲剧的是administrator密码忘记了!!

在网上找了种删除windows/config/sam文件的方法,发现xp下行不通!!又是一个悲剧!呵呵,经测试使用牛逼的破解密码的软件Passware Kit解决了心中的忧虑!!

首先,介绍下Passware Kit的功能,简单直接的上图:

Passwave Kit

点击重置windows 管理员密码:

重置Windows管理员密码

步骤1,选择xp镜像下i386/TXTSETUP.SIF文件,否则“下一步”按钮为禁用状态

步骤2,表示给Passwave kit设置个启动密码.

ps:这个软件几乎可以重置任何xp系统的管理员密码,嘿嘿!!不设密码让人随意使用,后果…

点击下一步,选择刻录的设备(usb/cd),后面步骤省略!!

至于怎么使用Passwave kit刻录的软件来重置windows管理员密码,自行查看Passwave kit帮助文档!!

android实践–进度对话框(ProgressDialog)

2010年8月20日 lenomon 6 条评论

最近开始学习android,看到android下进度对话框(ProgressDialog)的例子,于是在此标记下!!

ps:个人想知道android下ProgressDialog的实现原理!

直接看关键代码吧!如下:

pdialog = ProgressDialog.show(MainActivity.this, dialog_title, dialog_body,true);

    new Thread(){
     public void run() {
      try {
       sleep(10000);
      } catch (InterruptedException e) {
       e.printStackTrace();
      } finally {
       //在后台程序完成后,必须关闭进度对话框,否则进度对话框永远无法关闭
       pdialog.dismiss();
      }
     }
    }.start();

ps:一定要调用pdialog.dismiss();结束ProgressDialog进度对话框,否则程序进入死循环!!
你想要的结果:

Android--ProgressDialog

二进制–补码简介

2010年7月15日 lenomon 20 条评论

最近因工作需要,了解下Java二进制存储情况,发现Java中二进制都是以补码形式存储。下面简单介绍下二进制的补码转换:

在计算机系统中,数值一律用补码来表示(存储)。
  主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 
       (1)正数的补码:与原码相同。
  【例1】+9的补码是00001001。
  (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
  【例2】求-7的补码。
  因为给定数是负数,则符号位为“1”。
  后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)
  所以-7的补码是11111001。
  已知一个数的补码,求原码的操作分两种情况:
  (1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
  (2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
  另一种方法求负数的补码如下:
  例如:求-15的补码
  第一步:+15:00001111
  第二步:从右向左找到第一个1,然后把左边的所有位取反
  11110001
  再举一个例子验证下:求-64的补码
  +64:01000000
  11000000
标签: ,