⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 starblogmain.js

📁 dev控件,C#开发中使用的控件
💻 JS
📖 第 1 页 / 共 5 页
字号:
		}
}

/**
*JSON对象克隆方法 不能够克隆 function undefined 两种值
*@param {Object/Array/String/Number} obj 入值
*@return 克隆出来的新对象
*/
function objectClone(obj,preventName){
	if((typeof obj)===(typeof null)){
		var res=(!obj.sort)?{}:[];
		for(var i in obj){
			if(i!=preventName)
				res[i]=objectClone(obj[i],preventName);
		}
		return res;
	}
	return obj;
}
	
function getCookie(name){
	var r = new RegExp("(^|;|\\s)*"+name+"=([^;]*)(;|$)");
	var m = document.cookie.match(r);
	return (!m?"":m[2]);
}
function setCookie(name,value){
	document.cookie = name+"="+value+"; path=/; ;domain=qq.com";
}
function deleteCookie(name){
	document.cookie = name+"=;domain=qq.com;expires="+(new Date(0)).toGMTString();
}

var Browser = new Object();
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isIE7 = Browser.isIE && window.XMLHttpRequest;
Browser.isIE8 = Browser.isIE && window.XDomainRequest;
Browser.isMozilla = Browser.isIE?false:(typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
Browser.isFirefox = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);
Browser.isSafari = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("safari")!=-1);
Browser.isOpera = Browser.isIE?false:(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);

function loadJsonData(xID,url,callback,errcallback,refresh,charset,callbackFunctionName){
	if (parent.g_JData[xID] && !refresh && !parent.g_JData[xID].error) {
		callback(parent.g_JData[xID]);
		return;
	}
	charset = charset ? charset : "gb2312";	
	var cFN = callbackFunctionName ? callbackFunctionName : "JsonCallback";
	var snd = new QZONE.JSONGetter(url, void(0), null, charset);
	snd.onSuccess = function(o){
		try{
			callback(parent.g_JData[xID] = o);
		}catch(err){
			if(err.number && err.number==-2146823281){
			}
		}
	};
	if (typeof(errcallback) == 'function') {
		snd.onError = errcallback;
	}
	snd.send(cFN);		
}

function includeJS(src,option,_doc){
	var s = new QZONE.JsLoader();
	if (typeof(option) == 'function') s.onload = option;
	s.load(src, _doc, "gb2312");	
}

var callBackHsmp=new Array();
function selectXMLNode(data, path) {
	return (!Browser.isIE) ? XMLselectSingleNode(data, path) : data.selectSingleNode(path);
}

function XMLselectSingleNode(o, xpath) {
	var x = XMLselectNodes(o, xpath)
	if (!x || x.length < 1)
		return null;
	return x[0];
}
function XMLselectNodes(o, xpath) {
	var xpe = new XPathEvaluator();
	var nsResolver = xpe.createNSResolver(o.ownerDocument == null ? o.documentElement : o.ownerDocument.documentElement);
	var result = xpe.evaluate(xpath, o, nsResolver, 0, null);
	var found = [];
	var res;
	while (res = result.iterateNext()) {
		found.push(res);
	}
	return found;
}
function getXMLNodeText(node) {
	return node.innerText || node.textContent || node.text;
}

function loadXMLAsyncNoCache(xID, xUrl, callback, err_callback,data,returnType){return loadXMLAsync(xID, xUrl, callback, err_callback,true,data,returnType);};	
function LoadXMLDataEx(itemno,url,callback,err_callback,data){return loadXMLAsync(itemno, url, callback, err_callback,false,data);};

function loadXMLAsync(xID, xUrl, callback, err_callback,nocache,data,returnType) {
	var m=xUrl.match(/(^http:\/\/([a-z,A-Z,0-9,\-,_,\.]+\.qq\.com)\/)/);
	if(!m){alert("不能访问非qq.com域的资源");return;}
	var domain = m[0];
	var host = m[2];
	var proxyPageURL = domain+"proxy.html";
	
	var f = document.getElementsByTagName("iframe");
	for(var i=0;i<f.length;i++) {
		var isRightProxy=false;
		try{isRightProxy=f[i].src.indexOf(proxyPageURL)==0}catch(e){}
		if(isRightProxy){//找到了代理页面
			if(!callBackHsmp[host] && typeof callBackHsmp[host] != "undefined"){//代理页面没用回调等待队列(初始化已经完成)
				frames[i].loadXMLAsync(xID, xUrl, callback, err_callback,nocache,data,returnType);
			}else{
				if (typeof callBackHsmp[host] == "undefined") callBackHsmp[host] = [];
				callBackHsmp[host][callBackHsmp[host].length]={
					"callback":callback,
					"xID":xID,
					"xUrl":xUrl,
					"err_callback":err_callback,
					"nocache":nocache,
					"data":data,
					"returnType":returnType
				};
			}
			return;
		}
	}
	
	if (!callBackHsmp[host]){
			callBackHsmp[host]=[{
				"callback":callback,
				"xID":xID,
				"xUrl":xUrl,
				"err_callback":err_callback,
				"nocache":nocache,
				"data":data,
				"returnType":returnType
			}];
		createProxy(proxyPageURL);
	}
};

/**
 * 创建proxy页面
 * @param {String} src
 */
function createProxy(src){
	var f = document.getElementsByTagName("iframe");
	for(var i=0;i<f.length;i++)
		if (f[i].src.indexOf(src)!= -1) return;
	
	var i = document.createElement("iframe");
	var proxyDiv = $("proxy");
	if (!proxyDiv) document.body.insertBefore(i,null); else $("proxy").appendChild(i);
	i.width=0;
	i.height=0;
	i.src=src;
	i = null;
}

function doFill(templetHTML,xDoc,xLevel){
	xLevel = xLevel?xLevel:0;
	var r_index = /<%=index%>/g;
	var r_text = /<%=text%>/g;
	var r_attribute_global = /<%=@(\w+)%>/g;
	var r_escape_text = /<%=#text%>/g
	//#表示内容需要进行escape后插入到页面中间的脚本中去
	var r_plain_text = /<%=~text%>/g
	//~表示需要无格式内容,即去除所有的换行、制表符、单双引号
	var r_entity_text = /<%=&text%>/g
	//&表示内容需要进行text2HTML转换,吧符号转义为实体。
	var isXML = !!xDoc.xml;
	var stRegPrefix = "<%repeat_"+xLevel+"\\s*match=\"([^\"]+)\"[^%]*%>";
	var stRegContent = "<%repeat_"+xLevel+"[^>]*%>((.|\\n)+)<%_repeat_"+xLevel+"%>";

	var r_repeat_match = new RegExp(stRegPrefix);
	var r_repeat_match_global = new RegExp(stRegPrefix,"g");
	var r_repeat_content = new RegExp(stRegContent);
	var r_repeat_match_next_level = new RegExp("<%repeat_"+(xLevel+1)+" match=\"([^\"]+)\"");

	if (templetHTML.match(r_repeat_match)==null){
		alert("没有找到xml节点<%repeat_"+(xLevel)+"%>");
		return;
	}

	var arPrefix = templetHTML.match(r_repeat_match_global);
	var startPosition = 0;
	for (var i=0;i<arPrefix.length;i++){
		var st = arPrefix[i];
		var nodePath = st.replace(/^.*match=\"|\".*$/g,""); //获得xml节点路径
		if (st.indexOf("preCallback")>0)
			var fnPreCallBack = eval(st.replace(/^.*preCallback=\"|\".*$/g,"")); //获得预回调函数
		if (st.indexOf("callback")>0)
			var fnCallBack = eval(st.replace(/^.*callback=\"|\".*$/g,"")); //获得回调函数
		startPosition = templetHTML.indexOf(st);
		var endPosition = templetHTML.indexOf("<%_repeat_"+xLevel+"%>",startPosition);
		var replaceContent = templetHTML.substring(startPosition,endPosition+13)
		startPosition += st.length;
		var repeatContent = templetHTML.substring(startPosition,endPosition); //获得内容模板
		var nodes = isXML?xDoc.selectNodes(nodePath):objSelectNodes(xDoc,nodePath); //获得xml节点
		var arContent = [];
		var attributes = repeatContent.match(r_attribute_global);
		if (attributes == null) attributes = [];
		var repeatTimes = nodes.length;
		if (st.indexOf("repeat_num")>0){
			var sTimes = st.replace(/^.*repeat_num=\"|\".*$/g,"");
			if(!isNaN(sTimes))
				repeatTimes=Math.min(repeatTimes,parseInt(sTimes,10));
		}

		for (var j=0;j<repeatTimes;j++){
			var node = nodes[j];
			if(fnPreCallBack)fnPreCallBack(node,j);//预处理节点
			var content = repeatContent;
			if (repeatContent.match(r_repeat_match_next_level)!=null) //处理子节点
				content = doFill(repeatContent,node,xLevel+1) // 递归调用
			var st = isXML?node.text:node;
			var s = content.replace(r_index,(j+1));
			if(typeof st=="string"){
				s=s.replace(r_text,st);
				if(r_escape_text.test(s))
					s=s.replace(r_escape_text,escape(st))//需要escape的内容
				if(r_plain_text.test(s))
					s=s.replace(r_plain_text,st.replace(/[\r\n\t'"]/g," "))//需要去除换行和制表符的内容
				if(r_entity_text.test(s))
					s=s.replace(r_entity_text,st.Text2HTML());//需要进行text2html转换的内容
			}
			for (var k=0;k<attributes.length;k++){
				var attrTag = attributes[k].replace(/\W/g,"");
				var attrValue = isXML?nodes[j].getAttribute(attrTag):nodes[j][attrTag];
				if (attrValue==null && isXML && nodes[j].selectSingleNode(attrTag)!=null)  // to verify by hyc
					attrValue = nodes[j].selectSingleNode(attrTag).text;
				if (attrValue==null) attrValue = "";
				if(/@#/.test(attributes[k])) attrValue=escape(attrValue);//需要escape的属性
				if(/@~/.test(attributes[k])) attrValue=attrValue.replace(/[\r\n\t'"]/g," ");//需要去除换行和制表符的属性
				if(/@&/.test(attributes[k])) attrValue=attrValue.Text2HTML();//需要进行text2html转换的属性
				s = s.replace(attributes[k],attrValue);
			}
			
			arContent[j] = s;
			if (fnCallBack) fnCallBack(node,arContent,j);
		}
		templetHTML = templetHTML.replace(replaceContent,arContent.join(""));
	}
	return templetHTML;
}

// json支持
function objSelectNodes(obj,oPath){
	if(/^\//.test(oPath)) oPath = oPath.substr(1);
	var a = oPath.split("/");
	var o = obj[a.shift()];
	if(!o) return [];
	if(!o.sort) o = [o];
	if(a.length==0)	return o;
	var subPath = a.join("/");
	var result = [];
	for(var i=0;i<o.length;i++){
		var a = objSelectNodes(o[i],subPath);
		if(a && a.length>0)
			result = result.concat(a);
	}
	return result;
}

function objSelectSingleNode(obj,oPath){
	var o = objSelectNodes(obj,oPath);
	return (o.length>=1)?(o[0]):(null);
}

function custom_menu_swf(idx,frameName,url){
	switch(parseInt(idx)) {
		case 1:location = 'http://user.qzone.qq.com/'+g_iUin;break;
		case 2:location = 'http://user.qzone.qq.com/'+g_iUin+'/blog';break;
		case 3:location = 'http://user.qzone.qq.com/'+g_iUin+'/music';break;
		case 4:location = 'http://user.qzone.qq.com/'+g_iUin+'/msgboard';break;
		case 5:location = 'http://user.qzone.qq.com/'+g_iUin+'/photo';break;
		case 6:location = 'http://user.qzone.qq.com/'+g_iUin+'/home';break;
		case 7:location = 'http://user.qzone.qq.com/'+g_iUin+'/admin';break;
		case 8:location = 'http://user.qzone.qq.com/'+g_iUin+'/interact';break;
		default:break;
	}
	parent.sdsFlashSW=true;
}

/**
 * 发送读统计状态请求
 * @param {string} url
 * @param {int} t 超时时间(ms)
 */
function send_stat_request(url,t){
	if (!parent.tempStatistic)
		parent.tempStatistic=[];
	var l = parent.tempStatistic.length;
	parent.tempStatistic[l] = new Image();
	with(parent.tempStatistic[l]){
		onload=onerror=new Function('this.ready=true;this.onload=this.onerror=null;parent.stat_image_clean();');
	}
	setTimeout("parent.tempStatistic["+l+"].src = '"+url+"';",t);
}
/**
 * 清理统计状态请求所使用的图片
 *
 */
function stat_image_clean(){
	var t=[];
	for(var i=0,l=parent.tempStatistic.length;i<l;i++){
		if(!!parent.tempStatistic.ready)
			t.push(i);
	}
	for(var i=0,l=t.length;i<l;i++){
		delete parent.tempStatistic[t[i]];
	}
}

//小纸条公版发送页面
function showMsgSender(){
	var qqnum=!!arguments[0]?arguments[0]:"";
	var title=!!arguments[1]?arguments[1]:"";
	var content=!!arguments[2]?arguments[2]:"";
	
	if(!(parent.checkLogin()>10000)){ // 如果验证登录错误,将显示登录框
		parent.showLoginBox('msg');
		return;
	}

	var s=([encodeURIComponent(qqnum),encodeURIComponent(title),encodeURIComponent(content)]).join("|");

	popupDialog("发送小纸条",'<iframe border="no" style="border:none;width:600px;height:422px" src="http://'+imgcacheDomain+'/qzone/admin/msg_editor.html?para='+s+'"></iframe>',580,410);
}

function addFavorUin(uin,isMyFriend){
	if(!(parent.checkLogin()>10000)){ // 如果验证登录错误,将显示登录框
		parent.showLoginBox("fav");
		return;
	}
	if(!uin) uin=g_iUin;
	
	window._addFavData = {"other_uin":uin,"uin":parent.g_iLoginUin,"main":parent.g_Main_Domain,"isMyFriend":isMyFriend,"property":parent.g_Property};

	popupDialog("添加 ["+ uin + "] 为空间好友",'<iframe frameBorder="no" style="border:none;width:350px;height:218px" src="http://'+imgcacheDomain+'/qzone/friends/friend_add_popup.html"></iframe>',350,244);
}

function goQQTX(){
	if(parent.checkLogin()>10000){
		if(parent.g_iLoginUin==parent.g_iUin){
			parent.tall("个人信息","ttinfo","http://"+parent.imgcacheDomain+"/qzone/admin/user_infomation_main.html#9");
		}
		else{
			parent.location.href="http://user.qzone.qq.com/"+parent.g_iLoginUin+"/qqtx/";
		}
	}else{
		if(!!parent.showLoginBox){
			parent.showLoginBox("portrait");
		}
	}
}

function texttrn(id){
	var fontMap = "舒体隶书彩云细黑新魏宋体姚体幼圆仿宋行楷";
	return fontMap.substring(2*(id - 1),2*id);
}

//////////////////////////////////////////////////////// basic end
//日志全局常量/变量
var bProcessingReq = false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -