• javascript 问题


    两个数组比较:a.sort().toString() == b.sort().toString()

    for循环内有异步方法时,需要闭包

    JSON.parse(data)出错时(提示、[nodejs中]),可能是json本身有问题,空对象中加了空格。

    xhr, blob, base64

    window.URL.createObjectURL(blob): blob是 file和blob对象; 创建一个新的对象URL,该对象URL可以代表某一个指定的File对象或Blob对象.

    用法:本地图片预览:

    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'test.jpg', true);
    
    xhr.responseType = 'blob';
    
    xhr.onload = function(e){
    	if(this.status == 200){			
    		var blob = this.response;
    		console.log(window.URL.createObjectURL(blob));			
    	}
    }
    
    xhr.send(null);
    

    注意:1、要见server;2、responseType='blob'; this.responseText:只有为''或'text'时才能看到;3、Blob {type: "image/jpeg", size: 76797, slice: function}

    下载图片的另一种方式:

    var xhr = new XMLHttpRequest();
    	
    xhr.open('GET', 'test.jpg', true);
    
    xhr.responseType = 'arraybuffer';
    
    xhr.onload = function(e){
    	if(this.status == 200){
    		var uInt8Array = new Uint8Array(this.response);
    		var i = uInt8Array.length;
    		var binaryString = new Array(i);
    		while(i--){
    			binaryString[i] = String.fromCharCode(uInt8Array[i]);
    		}
    		var data = binaryString.join('');
    		var base64 = window.btoa(data);
    		console.log('data:image/png;base64,'+base64);			
    	}
    }
    
    xhr.send(null);
    
    var uInt8Array = new Uint8Array(this.response);    this.response是ArrayBuffer,在它基础上建了一个视图
    binaryString[i] = String.fromCharCode(uInt8Array[i]);  uInt8Array[i]:是unicode值(0-255),fromCharCode把unicode值转为字符串(Ù)。
    var base64 = window.btoa(data);  把字符串编码为base64,解码时atob()
    'data:image/png;base64,'+base64    可以访问图片。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一


    curl是利用URL语法在命令行方式下工作的开源文件传输工具:curl -v -r 100-200 http://localhost:3000/test.jpg > /dev/null:  检测server是否允许range request。express是支持的。
    html状态码206:部分内容,区间请求range request。

    print():一种方法,会真正的打印。

    jsshell:可以编写js代码

    屏幕右键:不知道jquery的方法怎么做,用原生的js也可以实现

    document.getElementById('update').oncontextmenu=function(e){            
    	return false;        
    }
    

    屏蔽中键:用jquery的方法,其实原生的也行

    $('#l_r').on('mousedown', function(e){
          e.preventDefault();       
        }); 

    '面试'..replace(/[^u0000-u00FF]/g,function($0){return escape($0).replace(/(%u)(w{4})/gi,"&#x$2;")})  中文转utf-8

    unescape('面试'.replace(/&#x/g,'%u').replace(/\u/g,'%u').replace(/;/g,''));  utf-8转中文  

    取对象的属性值,如果属性是参数,不能通过.,而要通过[]

    var obj = {
       'name': 'sfp',
       'age': 27 
    }
    
    for(var key in obj){
       // 这样取不到
       console.log(obj.key);
       // 这样才可以
       console.log(obj[key]);
    }
    

    把数组字符串转为数组:JSON.parse();

    把数组转为数组字符串:JSON.stringify();

    如果浏览器禁用了js,标签本身的onclick事件也执行不了。

    click触发点击事件;onclick添加点击的事件处理程序;

    window.location.href='http://www.baidu.com'; 在当前页面打开

    window.open('http://www.baidu.com'); 在新标签页打开

    检测浏览器是否为移动端的:

    function isMobile() {
    return navigator.userAgent.toLowerCase().indexOf("mobile")>=0;
    }

    检测浏览器的客户端机器类型

    http://my.oschina.net/docin/blog/200663

    在js中用console调试是个不错的方式,但是在IE8中却有不支持的现象,会导致你的js出错,所以在开发的时候使用console在firefox中调试可以, 
    但是,调试完成之后一定记得删除,要不会在IE8中有影响。

    闭包学习时,会找<li>的内容,使用事件代理。受这个影响,删除li时,也会用事件代理(父元素)。其实可以给元素加class,给class加事件。

    给元素加click事件,如果元素是之后通过.html()方法加载的,则click事件无效

    给元素加click事件,删掉该元素,增加该元素,click之后没有反应了。

    双击的时候也会触发单击事件

    keydown事件添加时:最好加载document,如果加在元素上就会有问题。如果元素是通过js添加的,那就没有keydown的事件了。

    KsmM.findByIdAndUpdate:使用Model

    var update_klm = {
    		score : score,
    		comment : req.body.comment,
    		ksmname : req.body.ksmname
    	};
    	var options_klm = {};
    
    	KsmM.findByIdAndUpdate(req.body.ksmid, update_klm, options_klm, function(err){
    		if(err){
    	        console.log('updateKLM save:'+err);
    	    }else{
    	    	console.log('find _id');
    			console.log('score:'+result.score);
    	    } 
    		
    	})// 

    上一页

    方法一:window.location.href = document.referrer; 很容易陷入死循环中

    方法二: js返回上一页的实现方法 http://blog.csdn.net/tony8829/article/details/6450101

    onClick="javascript :history.back(-1);"
    window.history.go(-1);
    

      

    ajax,nodejs后台都正常,但是没有调用ajax的success的函数,。

    解决办法:使用complete,输出textStatus,原来是预定返回json,但是删除之后不需要传json,只需要传字符串说明就好,所以dataType改为text。 

    在html中添加onclick 这样也是可以的

    <p onclick="javascript:test()">

    script标签 type='text/html' 用法 很有趣,已记录。

    对象数组排序 

    _.sortBy(_item, function(item){
        return _item.key;
    });

    很奇特的问题:如果一个函数内部不使用某个变量,则debugger时,找不到那个变量。

    $(function($){
    
              $('#delete').on('click', function(e){
    
                var id = '123';
    
                layer.confirm('确定删除吗?', {
                    btn: ['确定','取消'] //按钮
                }, function(){
                    $.ajax({
                        type: 'post',
                        url: '/test', // 可以获取到id
                        dataType: 'json',
                    })
                    .done(function(data){
                        if(data.code === 1){
                            // debugger // 获取不到id
                            // console.log(id);  // 如果添加这句,则可以获取到id
                            layer.msg('删除成功', {icon: 1});
                        }else{
                            layer.msg('删除失败', {icon: 1});
                        }
                    })
                    .fail(function(err){
                        layer.msg('删除失败', {icon: 1});
                    })
                })
    
              })
    
          });
    

      

    问题 javascript 数组

    var a = [1,2,3];
    var b = a;
    a = [4,5,6];
    alert(b); //[1,2,3]

    var a = [1,2,3];
    var b = a;
    a.pop();
    alert(b); //[1,2]

    a = [4,5,6];//改变的是a引用本身,没有改变数组对象 a.pop();//改变的是数组对象,a引用没有改变。 b = a;//该操作后,b直接指向数组对象,不是b指向a,a再指向数组。 //所以改变a引用并不会对b引用造成影响,改变数组对象可以。

  • 相关阅读:
    Drupal Coder 模块远程命令执行分析(SA-CONTRIB-2016-039)
    Python 实现 ZoomEye API SDK
    程序员互动联盟第一届编码大赛第二题解题分享
    python中各进制之间的转换
    记一次ctf比赛解密题的解决(可逆加密基本破解之暴力破解)
    使用JsonConfig控制JSON lib序列化
    openMRS项目
    Harmonic Number(调和级数+欧拉常数)
    Pairs Forming LCM(素因子分解)
    Uva 11395 Sigma Function (因子和)
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4257182.html
Copyright © 2020-2023  润新知