html-js 笔记

  1. Chrome 警告: Page layout may be unexpected due to Quirks Mode
    文档加上
<!DOCTYPE html>
  1. 修改后一个悬浮的Div 位置错误
TipDiv.style.left = event.clientX;
...

修改后为

		TipDiv.style.left = '' + event.clientX + 'px';
		TipDiv.style.top = '' + y + 'px';
		TipDiv.style.display = 'block';
		TipDiv.innerHTML =  "<span style='color:white;'>" + texts + "</span>";
  1. 对象遍历搜索,包含子节点
点击查看代码
function objlogdeep(name, obj, deepmax, keymax)
{
	var		lenp, str;

	lenp = 16;

	if(!deepmax)
		deepmax=1;
	if(!keymax)
		keymax=4096;

	function funinfo(ftext, nmax)
	{
		var	len;
		nmax || (nmax=96);
		info = ""+ftext;
		info = info.substring(0,nmax*4);
		info = info.replace(/\r\n/g," ");
		info = info.replace(/\n/g," ");
		info = info.replace(/\t/g," ");
		do{
			len=info.length;
			info = info.replace(/\s\s/g," ");
		}while(len!=info.length);
		info = info.substring(0,nmax);
		return info;
	}

	function loopdeep(path, obj, deep)
	{
		var		head, hlen, spath, keylist, str, i;

		if(deep >= deepmax)
			return "";
		if(obj == null)
			return "";
		if(typeof(obj)=='string' || typeof(obj)=='number' || typeof(obj)=='undefined')
			return "";

		hlen = lenp*(deepmax+1);
		keylist =Object.keys(obj);
		if(keylist.length > keymax)
		{
			head = path;
			for(i=head.length;i<hlen;i++)
				head+=" ";

			str = head + "Property skip: > 4096\r\n";
			return str;
		}
		str = "";
		for(var key in obj)
		{
			var		val, info;

			try {val=obj[key];	}
			catch(err){	val="error...";	}
			spath = path;
			spath += "." + key;
			head = spath;
			for(i=spath.length;i<hlen;i++)
				head+=" ";
			head+="	";

			if(typeof(val)=='function')
			{
				info = funinfo(val);
				str += head + key + " -> " + info + "\r\n";
				str += loopdeep(spath, val, deep+1);
				continue;
			}
			if(typeof(val)=='object')
			{
				info = funinfo(val);
				str += head + key + "=" + info + "\r\n";
				if(key=='caller')
					continue;
				str += loopdeep(spath, val, deep+1);
				continue;
			}

			info = "" + val;
			if(info.length >= 96)
				info = info.substring(0, 96);
			str += head + key + "=" + info + " (type: " + typeof(val)+ ")" + "\r\n";
	  		str += loopdeep(spath, val, deep+1);

	  	}
		if(typeof(obj)=='function' && obj.prototype)
		{
			spath = path;
			spath += "." + "prototype";
		  	str += loopdeep(spath, obj.prototype, deep);
		}
		return str;
	}

	str = loopdeep(name, obj, 0);
	return str;
}
  1. 保存文件
var	Element_local_FileSave;

function  FileSave(filename, str)
{
	function base64(s)
	{
	  return window.btoa(unescape(encodeURIComponent(s)));
	}
	const uri = 'data:text/plain;charset=UTF-8;base64,';
	url = uri + base64(str);

	var down = document.getElementById("local_FileSave");
	if(!down)
		down = Element_local_FileSave;
	if(!down)
	{
		down = document.createElement('a');
		Element_local_FileSave = down;
	}
	down.href = url;
	down.download = filename;
	down.id = "local_FileSave";
	ret = down.click();
	return str.length;
}

SubtleCrypto 使用AES 测试

async function Aes128Test(){
    var decoder = new TextDecoder();
    var encoder = new TextEncoder();
    
	var key1 = await window.crypto.subtle.importKey(
	    "raw",
	    encoder.encode("aes_128_password"),
	    "AES-CBC",
	    true,
	    ["encrypt", "decrypt"]
	);

	var dat_enc = await window.crypto.subtle.encrypt(
        { name: "AES-CBC", iv: encoder.encode("aes_128_iv_datax") },
        key1,
        encoder.encode("TestAesText"),
    );
    
    var dat_dec = await window.crypto.subtle.decrypt(
        { name: "AES-CBC", iv: encoder.encode("aes_128_iv_datax") },
        key1,
        dat_enc
    );

    var dat_text = decoder.decode(dat_dec);
//  console.log(dat_text);     
}
posted @ 2023-11-06 13:19  Yofoo  阅读(201)  评论(0编辑  收藏  举报