<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[彭良维的专栏]]></title><description><![CDATA[H5前端技术---弹钢琴的码农]]></description><link>https://blog.youkuaiyun.com/seven0404</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; seven0404]]></copyright><item><title><![CDATA[node.js 搭建本地服务]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/78430470</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/78430470</guid><author>seven0404</author><pubDate>Thu, 02 Nov 2017 23:07:58 +0800</pubDate><description><![CDATA[搭建nodejs服务器步骤:

1.安装nodejs服务(从官网下载安装)，node相当于apache服务器

2.在自己定义的目录下新建服务器文件如
 server.js

例如，我在E:\PhpProject\HTML5\websocket下创建了server.js文件
var http = require('http');//引入http模块

//开启服务，监听8888端口]]></description><category></category></item><item><title><![CDATA[安卓手机1px问题]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/78083644</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/78083644</guid><author>seven0404</author><pubDate>Mon, 25 Sep 2017 11:51:04 +0800</pubDate><description><![CDATA[这是使用vue+less写的项目：
先用js判断是是否是安卓

if(!navigator.userAgent.match(/(iPhone|iPod|ios)/i)){ // 匹配安卓
  this.show1px = true;
}

cssli{&.scale-1px{
  position: relative;
  margin-bottom: 18px;
  width: 100]]></description><category></category></item><item><title><![CDATA[页面禁止复制css实现]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/75007572</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/75007572</guid><author>seven0404</author><pubDate>Wed, 12 Jul 2017 11:37:29 +0800</pubDate><description><![CDATA[Css禁用选取操作：

unselectable: IE/Opera, 
-moz-user-select: FireFox, 
onselectstart: IE/Safari, 
-webkit-user-select:Chrome

放到单独的项目活着body都行]]></description><category></category></item><item><title><![CDATA[前端JSer装逼手册]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/74000569</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/74000569</guid><author>seven0404</author><pubDate>Fri, 30 Jun 2017 15:18:38 +0800</pubDate><description><![CDATA[前端JSer装逼手册 
在装逼成本越来越高的JS圈，是时候充值一下了 ―――― 题记
§ 开发
Macbook Pro是标配，美其名曰“提高开发体验”什么？你还在用Spotlight？赶紧给我换Alfred！
编辑器，Sublime / Atom / VS Code 三选一
虽然很想用IDE，但一定要忍住，并且与人解释道：
“启动速度慢，消耗资源多，不适合我这种完美主义者
如果不是为]]></description><category></category></item><item><title><![CDATA[提取文件后缀名，生成随机字符串]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/73349999</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/73349999</guid><author>seven0404</author><pubDate>Fri, 16 Jun 2017 18:30:51 +0800</pubDate><description><![CDATA[生成随机字符串
function random_string(len) {
		len = len || 32;
		var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
		var maxPos = chars.length;
		var pwd = '';
		for (i = 0; i < len; i++) {
	]]></description><category></category></item><item><title><![CDATA[手机端alert()调试]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/71525387</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/71525387</guid><author>seven0404</author><pubDate>Wed, 10 May 2017 14:41:37 +0800</pubDate><description><![CDATA[var _base =
window.$$={};
_base.tip=function (data) {
var _html =
$(''+data+'')
$('body').append(_html);
setTimeout(function () {
_html.remove()
},1000)
}



这样就可以不用alert()阻止进程。但是缺点不能展示对象]]></description><category></category></item><item><title><![CDATA[微信公众号开发中进入的第一个页面，点击浏览器的返回，返回到公众号聊天窗口]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/71479927</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/71479927</guid><author>seven0404</author><pubDate>Tue, 09 May 2017 16:00:21 +0800</pubDate><description><![CDATA[pushHistory();

function pushHistory() {
    var state = {
        title: "title",
        url: "#"
    };
    window.history.pushState(state, "title", "#");
}
if (typeof window.addEventListener != "u]]></description><category></category></item><item><title><![CDATA[vue 拦截请求，添加请求头]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/71439979</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/71439979</guid><author>seven0404</author><pubDate>Tue, 09 May 2017 10:50:06 +0800</pubDate><description><![CDATA[Vue.http.interceptors.push((request, next) => {
      // ...
      // 请求发送前的处理逻辑
      if(token) {
          request.beforeSend = function() {
              request.headers['token'] = token.token;
   ]]></description><category></category></item><item><title><![CDATA[解决ios上audio不能自动播放，也不能连续播放的问题]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/70336561</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/70336561</guid><author>seven0404</author><pubDate>Fri, 21 Apr 2017 19:37:33 +0800</pubDate><description><![CDATA[在写实时聊天的页面的时候，有一个需求是点击完第一条开始播放后，后面如果没有播放就需要连续的往后播。新的消息来了之后需要自动播放；
由于ios的安全机制问题。不允许audio和video自动播放，所以想要获取页面上的audio标签然后给src值，然后使用自动播放那是实现不了的，即使给play()也是播放过不了；
解决方法是直接创建一个audio对象，当时问题是iOS也是不允许主动创建对象的，所以]]></description><category></category></item><item><title><![CDATA[websoket 的重连和代理]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/70336360</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/70336360</guid><author>seven0404</author><pubDate>Fri, 21 Apr 2017 18:40:35 +0800</pubDate><description><![CDATA[websoket 如果长时间没有发送消息会出现休眠状况
这里有一个插件。可以重连
https://github.com/joewalnes/reconnecting-websocket

点击打开链接



var ws = new WebSocket('ws://....');



使用  ReconnectingWebSocket  代替 WebSocket

]]></description><category></category></item><item><title><![CDATA[在url中通过属性名获取属性值]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/70170291</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/70170291</guid><author>seven0404</author><pubDate>Fri, 14 Apr 2017 11:12:12 +0800</pubDate><description><![CDATA[很多时候我们会通过url传值，所以在URL中取值就有很多方法了。这里介绍一种方法



function geturl(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if]]></description><category></category></item><item><title><![CDATA[移动端设置根节点字体大小]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/69386192</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/69386192</guid><author>seven0404</author><pubDate>Thu, 06 Apr 2017 11:26:20 +0800</pubDate><description><![CDATA[var view_width = window.screen.availWidth;
            var _html = document.getElementsByTagName('html')[0];

            console.log(view_width)

            if (view_width > 750){
                _h]]></description><category></category></item><item><title><![CDATA[高效数组去重，数组快排方法]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/66973201</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/66973201</guid><author>seven0404</author><pubDate>Mon, 27 Mar 2017 16:57:27 +0800</pubDate><description><![CDATA[数组去重最高效的方法

function unique(){
 var res = [];
 var json = {};
 for(var i = 0; i < this.length; i++){
  if(!json[this[i]]){
   res.push(this[i]);
   json[this[i]] = 1;
  }
 }
 return res;
}

数组快排]]></description><category></category></item><item><title><![CDATA[获取URL地址]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/62419826</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/62419826</guid><author>seven0404</author><pubDate>Thu, 16 Mar 2017 11:55:02 +0800</pubDate><description><![CDATA[1，设置或获取对象指定的文件名或路径。

alert(window.location.pathname)

2，设置或获取整个 URL 为字符串。

alert(window.location.href);

3，设置或获取与 URL 关联的端口号码。

alert(window.location.port)

4，设置或获取 URL 的协议部分。

alert(win]]></description><category></category></item><item><title><![CDATA[数组字符串常用方法]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/54599573</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/54599573</guid><author>seven0404</author><pubDate>Wed, 18 Jan 2017 11:21:42 +0800</pubDate><description><![CDATA[数组、字符串常用方法


1.push(): 向数组尾部添加一个或多个元素，并返回添加新元素后的数组长度。注意，该方法会改变原数组。

1 var arr = [1,2,3];
2 console.log(arr);        //  [1, 2, 3]
3 var b = arr.push(4);  
4 console.log(b);          //  4   //表示当]]></description><category></category></item><item><title><![CDATA[父元素是弹性盒子让内容是长单词强制换行]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/53581052</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/53581052</guid><author>seven0404</author><pubDate>Mon, 12 Dec 2016 14:18:38 +0800</pubDate><description><![CDATA[父元素是弹性盒子让内容是长单词强制换行
效果图
html代码

			
			
					ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]]></description><category></category></item><item><title><![CDATA[全选，全不选，满足全选的时候自动加上全选]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/53437317</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/53437317</guid><author>seven0404</author><pubDate>Fri, 02 Dec 2016 18:05:07 +0800</pubDate><description><![CDATA[这里只写js的实现逻辑
全选或者是全不选
	$('.checkboxAll').on('click',function(){
				if(this.checked){
					$(".indent tr :checkbox").each(function(){this.checked=true;}); 
				}else{
					$('.indent tr :checkbox').e]]></description><category></category></item><item><title><![CDATA[图片上传本地预览]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/53423919</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/53423919</guid><author>seven0404</author><pubDate>Thu, 01 Dec 2016 17:25:49 +0800</pubDate><description><![CDATA[图片上传有2个选择：
1：本地确认好后把图片上传到服务器
2：只要input改变就ajax异步请求将图片传到服务器。然后服务器返回上传的这个图片的链接地址。然后再再页面上展示出来。这样做的好处是提高兼容性。可以不用考虑IE兼容等等


这里只展示第一种上传方式的预览
html代码：
				
					
					
					
						
						
						上传]]></description><category></category></item><item><title><![CDATA[实时显示textarea输入多少字]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/53420567</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/53420567</guid><author>seven0404</author><pubDate>Thu, 01 Dec 2016 13:51:40 +0800</pubDate><description><![CDATA[考虑到粘贴和前后空格，超出后显示红色字体。去掉前后空格
words:function(){
			//显示输入了多少个字
			$('.words').on('input',function(){
				var str = $(this).val();
				var whitespace = new String(" \t\n\r");  
				//去掉字符串前面空格
			    if]]></description><category></category></item><item><title><![CDATA[border-style 边框]]></title><link>https://blog.youkuaiyun.com/seven0404/article/details/52804941</link><guid>https://blog.youkuaiyun.com/seven0404/article/details/52804941</guid><author>seven0404</author><pubDate>Thu, 13 Oct 2016 10:50:55 +0800</pubDate><description><![CDATA[border-style
属性分别有


none 定义无边框。 
hidden 与 "none" 相同。不过应用于表时除外，对于表，hidden 用于解决边框冲突。 
dotted 定义点状边框。在大多数浏览器中呈现为实线。 
dashed 定义虚线。在大多数浏览器中呈现为实线。 
solid 定义实线。 
double 定义双线。双线的宽度等于 border-width 的值]]></description><category></category></item></channel></rss>