function createDOMFromString (str){
var objConstain= document.createElement("div");
objConstain.innerHTML=str;
return objConstain;
}
作者: janing
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;
}
`
