• 前端问题处理汇总


    chrome浏览器加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH 的解决方案

    chrome 浏览器访问项目时加载大文件失败;
    报错提示::ERR_CONTENT_LENGTH_MISMATCH:

    我的解决方法:

    H5 audio在移动端的一些问题

    1. 不能自动加载音乐,需要调用play()之后,才开始加载;

    2. 音乐文件加载完成之后才能获取到duration;

    3. 播放失败问题,调用play()之后,会有一定几率出现加载失败,导致无法播放;

    第一个问题,暂时也没有什么好的办法,如果想要直接加载但不想播放,只能先调用play(),然后再调用pause(),但是这样也有几率遇到问题三,出现加载失败;

    第二个问题,现在的解决办法是,只能把时间提前写好在数据里面,渲染的时候,去数据获取;

    第三个问题,我是开了一个延时定时器,监控currentTime,如果等于0,就重新加载load(),然后再播放play(),如果不等于0 , 就清除定时器;


    表单自动填充密码问题
    chrome浏览器下,保存密码后,其他表单元素只要有文本框和密码框相邻的时候,会自动填充先前保存的账号密码:
    解决方法:

    • 1.在表单元素渲染完成后,用js清空value值
    • 2.在账号和密码输入框之间插入一个不可见的表单元素
    • 3.不需要自动填充的账号和密码表单元素添加 autocomplete="new-password" 属性(推荐使用)

    输入型表单元素的oninput事件优化
    我们知道oninput事件在监控表单的value值时,如果输入法是中文,在编辑的文字时,也会触发,这样在我们要实时监控表单元素value值时,会出现问题。

    解决方法:
    两个新事件
    compositionstart
    当浏览器有非直接输入的文字时(编辑时处罚), compositionstart事件会以同步模式触发。
    compositionend
    当浏览器有非直接输入的文字输入时(编辑完成输入时), compositionend会以同步模式触发。

    var text = document.querySelector('#person');
    var cpLock = false;
    text.addEventListener('compositionstart', function(){
        cpLock = true;
    })
    text.addEventListener('compositionend', function(){
        cpLock = false;
        if(!cpLock) console.log(this.value);
    })
    text.addEventListener('input', function(){
        if(!cpLock) console.log(this.value);
    });
    

    <textarea></textarea>里的换行标记到底是什么?
        换行推荐用
    
        这2个连用,是为了能够兼容各种不同环境
    

    数组原生 forEach方法如何跳出循环?

    注意,forEach()无法在所有元素都传递给调用的函数之前终止遍历。也就是说,没有像for循环中使用的相应的break语句。如果要提前终止,必须把forEach()方法放在一个try块中,并能抛出一个异常。如果forEach()调用的函数抛出foreach.break异常,循环会提前终止:

    function foreach(a,f,t){
    
        try { a.forEach(f,t); }
    
        catch(e){
    
            if(e === foreach.break)return;
    
            else throw e;
    
        }
    
    }
    
     
    
    foreach.break = new Error("StopIteration");
    
    // 转自: 《JavaScript权威指南(6版)》7.9.1 forEach()
    

    前端文件下载

    • 如果下载的文件是固定的静态文件,可以用a标签,配合download属性在点击的时候下载文件。
    // a 标签的下载功能
    download 属性,属性值就是下载的文件的名称。
    <a href="/images/logo.png" download="aaa">
    

    如果文件是动态的,需要在点击下载的时候,后端同学返回来的,上面的方法就无法实现了,我们可以用另一种方法,动态的创建a标签,把动态文件的路劲赋值给创建的a标签,主动触发a标签的点击,实现下载。

    //动态资源下载
    //首先我们从后端同学那里获取文件路劲;
    function getPath(){
    method:"get",
    url:"XXXXXXX"
    args:{},
    callBack:function(){
        //执行创建链接,下载函数
        funDownload("下载文件","http://mvw-develop.oss-cn-beijing.aliyuncs.com//gp-test775.pdf");
    
        }
    }
    
    getPath();
    
    var funDownload = function ( filename , filePath ) {
        // 创建隐藏的可下载链接
        var eleLink = document.createElement('a');
        eleLink.download = filename;
        eleLink.style.display = 'none';
    
        eleLink.href = filePath;
        // 触发点击
        document.body.appendChild(eleLink);
        eleLink.click();
        // 然后移除
        document.body.removeChild(eleLink);
    };		
    

    js中innerHTML与innerText的用法与区别

    例子:

    <div id="test">
       <span style="color:red">test1</span> test2
    </div>
    
    • test.innerHTML:

      也就是从对象的起始位置到终止位置的全部内容,包括Html标签。

      //上例中的test.innerHTML的值也就是
      “<span style="color:red">test1</span> test2 ”。
    
    • test.innerText:

      从起始位置到终止位置的内容, 但它去除Html标签
      上例中的text.innerText的值也就是“test1 test2”, 其中span标签去除了。

    • test.outerHTML:
      除了包含innerHTML的全部内容外, 还包含对象标签本身。
        //上例中的text.outerHTML的值也就是
        <div id="test"><span style="color:red">test1</span> test2</div>
    

    innerText 最早是Internet Explorer引入的一个属性, 于2016年在HTML标准中大会中标准化,所在老版浏览器中,可能会有兼容问题(火狐45以下不支持)。

    支持程度:

    • Chrome : 4;
    • Firefox (Gecko): 45 (45);
    • Internet Explorer : 6;
    • Opera : 9.6;
    • Safari (WebKit) : 3;

    检测浏览器窗口最小化,切换窗口

        window.addEventListener( 'blur', function(){
        	
        	console.log( '切换页面了/窗口小化了' );
        });
        
        window.addEventListener( 'focus', function(){
        	
        	console.log( '切回页面了' );
        });	
    
    

    获取textarea value值中的换行

    当我们要把获取textarea的value值渲染到页面中时,需要获取到textarea中的换行替换为HTML可以解析的换行符,否则文本将会变成一片,没有段落

    
    //获取到textarea文本框中的回车换行符,传入textarea的value
    function changeBr ( arg ){
    	
    	return arg.replace(/
    |
    /g,'<br/>');
    }
    
    

    textarea中的 "<"、">"替换

    当我们要把获取textarea的value值渲染到页面中时,如果value中存在 "<aaa>"这样的格式时,浏览器会解析为 标签,页面会显示错误,所有,要把他们替换为浏览器不解析的文本,再渲染到页面中。

    	
    	// 替换文本中的"<"和">",防止解析为标签
    	function replacePre ( str ){
    		
    		return str.replace( /[<>]/g , function($1){
    		    switch ($1) {  
    		    case "<":  
    		      return "&lt;";  
    		      break;  
    		    case ">":  
    		      return "&gt;";  
    		      break;  
    		      
    		    default:  
    		      break;  
    		    }				
    					
    		});			
    		
    	}
    
  • 相关阅读:
    关于ADO.NET连接池
    The Cost of GUIDs as Primary Keys
    数据库反规范设计
    如何快速的呈现我们的网页(转)
    小议数据库主键选取策略(转自吕震宇老师博文)
    javascript 单元测试 (Jsunit应用) 转
    sqlserver版本降级方法
    算术运算表达式正则及分析
    sql STUFF用法
    Flex DashBoard功能
  • 原文地址:https://www.cnblogs.com/koala0521/p/7275102.html
Copyright © 2020-2023  润新知