function createDOMFromString (str){ var objConstain= document.createElement("div"); objConstain.innerHTML=str; return objConstain; }
js 原生 select 选中值
var select=document.getElementByTagName("select"); var index=select.selectedIndex; var text=select.options[index].text;
正则匹配
js url get参数 转码 解码
var target = encodeURI('中文字'); //url转码 var afterConvert = decodeURI('%E7%BE%8E%E5%9B%A2%E7%BD%91'); //结果:"美团网" url解密
thinkphp 跨域
public function _initialize() { header ( "Content-type:text/html;charset=utf-8" ); header ( "Access-Control-Allow-Origin:*" ); // 允许任何访问(包括ajax跨域) }
Bootstrap nav hover 导航栏 划过激活
//让 hover 可以触发dropdown $("#header .nav .dropdown").on("mouseover", function() { if ($(this).is(".open")) { return; } $(this).find("> a").dropdown("toggle"); }) $("#header .nav .dropdown").on("mouseout", function() { $(this).removeClass("open"); })
必填选项小插件
声明
需要jq
还需要我的其他小工具
* in_array
调用
function mustFinish_init(){ var mustFinish_list=[ "username", "password", ] MF=new mustFinish(); //简易用法 //MF.init("label",mustFinish_list); //完整用法 MF.labels=$(".clearfix > div > label"); MF.list=mustFinish_list; MF.init(); } mustFinish_init();
源码
/*===========================================必填选项*/ function mustFinish(){ var that=this; this.labels=$("label");//需要标*的地方 this.list=[];//name数组 this.init=function(labels,list){ that.labels=(labels)?$(labels)||that.labels:that.labels; that.list=list||that.list; //必填选项标红 that.labels.map(function(index,element){ var namels=$(element).parent().find("[name]"); var isInList=false; namels.map(function(ind,input){ var namevalue=input.name; if(in_array(namevalue,that.list)){ isInList=true; } }) if(isInList){ var span=createElement("span","","*"); span.style.color="red"; $(element).prepend(span); } }) } this.check=function(){ var isPass=true; that.list.map(function(ele,ind){ // console.dir($("[name='"+ele+"']")) var obj=$("[name='"+ele+"']"); var inputValue=""; var Nodename=obj[0].nodeName; var inputType; if(Nodename=="SELECT"){inputType="select";} else{inputType=obj.attr("type");} switch (inputType) { case "text": obj=$(obj[0]); inputValue=obj.val(); break; case "password": obj=$(obj[0]); inputValue=obj.val(); break; case "radio": inputValue=obj.filter(":checked").val(); break; case "checkbox": inputValue=obj.filter(":checked").map(function(c_ind,c_ele){return c_ele.value}); break; case "select": // console.dir(obj); var selecter=obj[0]; inputValue=selecter.selectedOptions[0].value; inputValue=(inputValue=="请选择")?"":inputValue; break; default: obj=$(obj[0]); inputValue=obj.val(); } //console.log(inputValue); if(!inputValue||inputValue==""){ isPass=false; } }) return isPass; } }
window.open 打开浏览器小窗
channelmode=yes|no|1|0 是否使用剧院模式显示窗口。默认为 no。
directories=yes|no|1|0 是否添加目录按钮。默认为 yes。
fullscreen=yes|no|1|0 是否使用全屏模式显示浏览器。默认是 no。处于全屏模式的窗口必须同时处于剧院模式。
height=pixels 窗口文档显示区的高度。以像素计。
left=pixels 窗口的 x 坐标。以像素计。
location=yes|no|1|0 是否显示地址字段。默认是 yes。
menubar=yes|no|1|0 是否显示菜单栏。默认是 yes。
resizable=yes|no|1|0 窗口是否可调节尺寸。默认是 yes。
scrollbars=yes|no|1|0 是否显示滚动条。默认是 yes。
status=yes|no|1|0 是否添加状态栏。默认是 yes。
titlebar=yes|no|1|0 是否显示标题栏。默认是 yes。
toolbar=yes|no|1|0 是否显示浏览器的工具栏。默认是 yes。
top=pixels 窗口的 y 坐标。
width=pixels 窗口的文档显示区的宽度。以像素计。
window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
回调用法
var ref = top.window.open('url地址', '_blank', 'location=no'); var myCallback = function(event) { if (event.url.indexOf('sina_callback.jsp?uid') > 0) { alert(event.url); ref.close(); } } ref.addEventListener('loadstart', myCallback);
js对象 计数
var a={aa:1,bb:2}; var a_len=Object.keys(a).length;
chrome 插件化 方便调用storage.sync函数
需要
- ajax 封装成 我喜欢的样子
- jquery
说明
c( key , value , callback )
key:
- 说明-->储存键位,可选
- 类型-->string / object
- 如果是string,支持点语法 例如 u.getConfig
- 如果是object,就会忽略value的值,直接把它写入到snyc储存
value:
- 说明-->修改的值
- 类型-->string / object / null
- 不定义value为查询,定义了value则为修改
- 如果是null , 删除该key(支持点语法)
callback:
- 说明-->修改的值,必选
- 类型-->function
- 用以输出资料
奇淫巧技
c(function(ret){console.log(ret)});//输出全部snyc储存数据
c("u.getConfig",null,function(ret){console.log(ret)});//删除u下的getConfig
js
`
//c方法实现机制
function c(){
var key = arguments[0];
switch (true) {
case (typeof(key)=="undefined"):
key=null;
break;
case (typeof(key)=="function"):
key=null;
break;
case (key==""):
key=null;
break;
}
var callback,val;
//获取 回调函数 和 值
for(var i = 0 ,len=arguments.length; i < len ; i++){
if(typeof(arguments[i])=="function"){
callback=arguments[i];
}else{
if(i!=0){
val=arguments[i];
}
}
}
//如果key为json数据,直接写入并断开
if(typeof(key)=="object"&&key!=null){
//直接输入json数据,set
chrome.storage.sync.set(key, function(result){
chrome.storage.sync.get(null,function(newresult){
if(typeof(callback)!="undefined"){
callback(newresult);
}else{
return newresult;
}
})
})
return;
}
var keyObj;
var keyArr=[];
//点语法处理
keyArr=(typeof(key)!="string")?[null]:key.split(".");
chrome.storage.sync.get(keyArr[0],function(result){
switch (true) {
case (typeof(val)!="undefined"):
//存在val,判断是否要清除
if(val==null){
//清除操作
if(keyArr.length>1){
//删除对象中的一个属性
var data=childMerge(keyArr,undefined,result);
chrome.storage.sync.set(data, function(){
chrome.storage.sync.get(null,function(newresult){
if(typeof(callback)!="undefined"){
callback(newresult);
}else{
return newresult;
}
})
})
}else{
//删除整个对象
chrome.storage.sync.remove(keyArr[0], function(){
chrome.storage.sync.get(null,function(newresult){
if(typeof(callback)!="undefined"){
callback(newresult);
}else{
return newresult;
}
})
});
}
return;
}
var data=childMerge(keyArr,val,result);
chrome.storage.sync.set(data, function(){
chrome.storage.sync.get(null,function(newresult){
if(typeof(callback)!="undefined"){
callback(newresult);
}else{
return newresult;
}
})
})
break;
default:
// keyArr.splice(0,1);
ret=($.isEmptyObject(result))?"":childFind(result,keyArr);
if(typeof(callback)!="undefined"){
callback(ret)
}else{
return ret;
}
}
})
}
//遍历寻找子元素
function childFind(obj,arr){
if(arr[0]==null){
return obj;
}
if(typeof(obj[arr[0]])=="undefined"){
return undefined;
}
if(arr.length==1){
return obj[arr[0]];
}
if(arr.length>1){
var linshi=arr.concat();
linshi.splice(0,1);
return childFind(obj[arr[0]],linshi)
}else{
return obj[arr[0]];
}
}
//根据数组生成对象
function childMerge(arr,val,orobj){
var obj=clone(orobj);
var linshiObj=obj;
// arr=arr.reserve();
for(var i = 0 , len = arr.length ; i < len ; i++){
var nkey=arr[i];
switch (true) {
case (i==len-1):
linshiObj[nkey]=val;
break;
default:
if(typeof(linshiObj[nkey])!="object"&&i!=len-1){
linshiObj[nkey]={};
linshiObj=linshiObj[nkey];
}else{
linshiObj=linshiObj[nkey];
}
}
}
return obj;
}
function clone(myObj){
if(typeof(myObj) != 'object' || myObj == null) return myObj;
var newObj = new Object();
for(var i in myObj){
newObj[i] = clone(myObj[i]);
}
return newObj;
}
`