標簽歸檔:js

新寫的一個ajax類,用于新項目cms客戶端

這個函數我覺得還是比較實用的,用于69dns.com的一個新項目。代碼有點熟悉?不過這個可是我原創的代碼哦。
還有一個控制xml,控制form,控制css,以及加載的boot.js。
當然還有很多東西都不完善,等以后有空的時候,都整理一下。
實際上只是創建了一個stcms的json對象。為了能獨立使用加入了if(typeof(stcms)==”undefined”)stcms={};,算是另類的命名空間吧。

/*
文件:ajax.js
掛載:stcms
獨立:可獨立使用
設計:貓七@69dns.com
*/

(function(){
	if(typeof(stcms)=="undefined")stcms={};
	stcms.ajaxstatus=0;
	stcms.ajax=function(url,str,method,callback){
		if(stcms.ajaxstatus==1){
			alert("請等待上一個進程處理完。");
			return;
		}
		if(url.indexOf("?")!=-1)url+="&sendTme="+new Date();else url+="?sendTme="+new Date();
		var xmlhttpRequest;
		if(typeof(xmlhttpRequest!="object")){
	  	if(window.ActiveXObject){
	  		try{ 
	  			xmlhttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	  		}catch(e){ 
	  			xmlhttpRequest = false;
	  		}
			}else if(window.XMLHttpRequest){
				xmlhttpRequest = new XMLHttpRequest();
			}
		}
		if(xmlhttpRequest){
			stcms.ajaxstatus=1;
			xmlhttpRequest.open(method,url,true);
			if(method=="post")xmlhttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
			xmlhttpRequest.setRequestHeader("charset","gb2312");
			xmlhttpRequest.onreadystatechange=function(){
				if(xmlhttpRequest.readyState==4){
					if(xmlhttpRequest.status==200){
					 	callback(xmlhttpRequest.responseText);
					 	stcms.ajaxstatus=0;
					}
				}
			};
			xmlhttpRequest.send(str);
		}
  }
})();

使用方法很簡單:

stcms.ajax('a.asp',null,'get',function(t){alert(t)});

很簡單吧。另外發一下我boot.js,我覺得還是比較實用的;

/*
文件:boot.js
掛載:root
功能:加載js
設計:貓七@69dns.com
*/
(function(skin){
	var i,ie,d;
	stcms={
		listen:function(f){
			var l;
			window.onload=(typeof(l=window.onload)!='function')?f:function(){l();f();};
		},
		$:function(id){
			return document.getElementById(id);
		}
	};
	ie=!!((d=(document)).all);
	(function(arr){
		for(i in arr){
			var o=d.createElement("script");
			o.setAttribute("type","text/javascript");
			o.setAttribute("src",arr[i].replace("stcms.","js/").replace(/\./g,"\/").replace("*","all")+".js")
			d.getElementsByTagName('head')[0].appendChild(o);
		}
	})([
		'stcms.common.client.mouse',
		'stcms.common.client.keyboard',
		'stcms.skin.'+skin,
		'stcms.common.form.form',
		'stcms.common.form.grid',
		'stcms.common.form.box',
		'stcms.common.ajax',
		'stcms.common.xml',
		'stcms.common.cookie',
		'stcms.user.checklogin',
		'stcms.control.init'
	]);
})('default');

現在boot.js已經實現了皮膚,listen(實際就是window.onload),加載js,通過id獲取dom等四個功能。
其他的可能就不太常用的,吧所有的都細分,這樣可以減少請求和文件大小哦。
‘stcms.common.ajax’,就是上邊的ajax.js。

如果有時間,我也準備寫個js框剪,集合了所有的功能,哈哈哈。

可以方便的給DOM對象添加方法,可支持所有瀏覽器

Test
Test
/*
文件名:set-Object.html
設計者:苗啟源
功  能:可以方便的給DOM對象添加方法,可支持所有瀏覽器
主  頁:http://www.shiekolong331.icu/p/set-Object
*/
var $=function(id){return document.getElementById(id);}
//SetObject 設置對象屬性
var setObject=function(c,d){for(p in d){c[p]=d[p];if(p=="init")c.init();}return c;}
//擴展屬性
var __isIE=function(){return window.ActiveXObject}
var __Name=function(t){if(this.tmp)this.name=this.tmp;else this.name='Hello'}
var __setClass=function(t){if(__isIE){this.className=t}else{this.setAttribute('class',t);}}
var __getClass=function(){if(__isIE){return this.className}else{return this.getAttribute('class');}}

//測試對象
var ob=$("Demo");var ob2=$("Demo2");
setObject(ob,{tmp:'Demo',init:__Name,setClass:__setClass,getClass:__getClass});
setObject(ob2,{init:__Name,setClass:__setClass,getClass:__getClass});
document.write(ob.name+"\n");
document.write(ob2.name+"\n");
document.write(ob.getClass()+"\n");
document.write(ob2.getClass()+"\n");
ob.setClass('newDemoClass');
ob2.setClass('newDemo2Class');
document.write(ob.getClass()+"\n");
document.write(ob2.getClass()+"\n");

用Javascript實現郵件加密,寫了一個類

?????? 最近,朋友要給他的客戶與客戶交流,涉及一些很重要的信息,通過QQ,MSN感覺很不可靠,于是請我寫一個加密解密工具,防止信息在中途被截取。

????? 解密工具直接交給客戶,而交流信息通過E-mail或QQ。汗,我等小鳥怎么會那種高深的東東,實在是。。。為了朋友,赴刀山,下火海,奮斗了一個晚上,終于寫出來了一個。好東西不敢分享,發出來共享給大家,高手見笑了。

??? 原文地址為:http://miaoqiyuan.cn/p/javascript-jiami

??? 因為朋友特別說是很重要的信息,我想到了以前學C的時候有一個把每個字符的編碼讀取出來加13的一個算法。正巧Javascript中有一個charCodeAt,呵呵,把要加密的內容,依次對出每個字符的字符編碼,然后做一些處理,嘎嘎。。。。只要不知道算法,還是很難破解出來的,呵呵。

??? 具體算法還是大家自己看吧,說出來就沒有意思了。本文的算法與給朋友的稍微有些差別,畢竟安全第一。下面是運行界面,還是使用了我喜歡的hta文件。代碼全是Javascript。

js-jiami

js-jiemi

測試地址:
加密:http://www.shiekolong331.icu/products/js-jiami.htm
解密:http://www.shiekolong331.icu/products/js-jiemi.htm

加密.hta代碼(完全可以保存為html,執行效果一樣)

< !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>設置加密郵件內容</title>
<script type="text/javascript">
function itArt(){
	this.html="Hello";
	this.css="color:#000;width:640px;text-indent:20px;padding:5px;border:solid 5px #666;margin:5px;background:#CCC;margin-left:auto;margin-right:auto";
	this.length=0;
}
 
itArt.prototype = {
	init:function(){
		this.length=this.html.length;
	},
	play:function(){
		this.init();
		this.setPassword();
		this.echo();
	},
	setHtml:function(v){
		this.html=v;
	},
	setPassword:function(){
		var tmp="";
		for(var i=0;i<this .length;i++){
			tmp+="$"+this.html.charCodeAt(i);
		}
		this.html=tmp;
		tmp="";
		for(var i=0;i<this.html.length;i+=3){
			tmp+=" "+this.html.substr(i,3);
		}
		this.html=tmp;
		tmp="";
		for(var i=0;i<this.html.length;i++){
			tmp+=" "+this.html.charCodeAt(i);
		}
		this.html=tmp;
	},
	echo:function(){
		var t=document.createElement("div");
		t.innerHTML=this.html;
		if(window.ActiveXObject)
			t.style.cssText=this.css;
		else
			t.setAttribute("style",this.css);
		//不想用DOM刪掉子元素了,反正各瀏覽器都支持
		document.getElementById("x100").innerHTML="";
		document.getElementById("x100").appendChild(t);
	}
}
function setPassword(t){
	if(t!=""){
		var demo=new itArt();
		demo.setHtml(t);
		demo.play();
	}else{
		alert("請輸入內容開始加密");
	}
}
window.onload=function(){
	setPassword("你好,猜猜我給你的密文是什么? 哈哈,猜不到吧");
}
</script>
</this></script></head>
<body>
<textarea style="display:block;color:#000;width:640px;height:280px;text-indent:20px;border:solid 5px #666;margin:5px;background:#FFF;margin-left:auto;margin-right:auto" ondblclick="setPassword(this.value);" title="雙擊開始加密">你好,猜猜我給你的密文是什么? 哈哈,猜不到吧</textarea>
<div id="x100">
</div>
</body>