<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[哈哈hyc的博客]]></title><description><![CDATA[一个成长中的前端小白]]></description><link>https://blog.youkuaiyun.com/erdfty</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; erdfty]]></copyright><item><title><![CDATA[post方式返回文件流实现前端blob下载,responseType: ‘blob‘无效]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/125745717</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/125745717</guid><author>erdfty</author><pubDate>Tue, 12 Jul 2022 16:23:25 +0800</pubDate><description><![CDATA[一般情况下，下载分为好几种，但是常用的是get下载文件流直接下载post下载文件流是很少见的，但是鉴于参数太多，不能走get 只能走post下载，post下载分为两种：1.form表单下载2.post返回文件流转成blob下载，研究了很久 也很坑，上代码：这个地方如果responseType设为blob的话，返回的文件流将会被转成blob对象，不是文件流，但是无论怎么设置都没有转成blob对象，网上有很多解释，一个是说封装好的axios设置responseType是无效的，于是乎，我就引入了原生axios，]]></description><category></category></item><item><title><![CDATA[Do not access Object.prototype method ‘hasOwnProperty‘ from target object]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/119679848</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/119679848</guid><author>erdfty</author><pubDate>Fri, 13 Aug 2021 17:07:23 +0800</pubDate><description><![CDATA[今天用对象的属性hasOwnProperty，去判断对象是否包含该值，我这里主要判断对象是否为空，出现了以上错误，之前也遇到过类似的错误，如parseInt（‘24.5’），必须要给转换的进制类型，改为parseInt（‘24.5’，10）则正常
通过上述文字提示发现，不要从目标对象访问 Object 原型方法”，想到一种解决方案——直接找到这个方法，用 call 改变指向调用：


Object.prototype.hasOwnProperty.call(obj, 'key')

在ECMAScript.]]></description><category></category></item><item><title><![CDATA[vue3.0中setup使用(两种用法)]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/118695015</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/118695015</guid><author>erdfty</author><pubDate>Tue, 13 Jul 2021 10:59:11 +0800</pubDate><description><![CDATA[一、setup函数的特性以及作用

　　可以确定的是 Vue3.0 是兼容 Vue2.x 版本的 也就是说我们再日常工作中 可以在 Vue3 中使用 Vue2.x 的相关语法 但是当你真正开始使用 Vue3 写项目时 你会发现他比 Vue2.x 方便的多

　　Vue3 的一大特性函数 ---- setup

　　1、setup函数是处于 生命周期函数 beforeCreate 和 Created 两个钩子函数之间的函数 也就说在 setup函数中是无法 使用 data 和 methods 中的数据和方法的]]></description><category></category></item><item><title><![CDATA[vue中事件修饰符详解(stop, prevent, self, once, capture, passive)]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/114868415</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/114868415</guid><author>erdfty</author><pubDate>Tue, 16 Mar 2021 09:55:10 +0800</pubDate><description><![CDATA[.stop 是阻止冒泡行为,不让当前元素的事件继续往外触发,如阻止点击div内部事件,触发div事件.prevent 是阻止事件本身行为,如阻止超链接的点击跳转,form表单的点击提交.self 是只有是自己触发的自己才会执行,如果接受到内部的冒泡事件传递信号触发,会忽略掉这个信号.capture 是改变js默认的事件机制,默认是冒泡,capture功能是将冒泡改为倾听模式.once 是将事件设置为只执行一次,如 .click.prevent.once 代表只阻止事件的默认行为一次,当第二次触发的时候事件.]]></description><category></category></item><item><title><![CDATA[关于Vue不能监听（watch）数组变化]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/114035896</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/114035896</guid><author>erdfty</author><pubDate>Wed, 24 Feb 2021 19:11:57 +0800</pubDate><description><![CDATA[一、vue监听数组
vue实际上可以监听数组变化，比如


data () {
  return {
    watchArr: [],
  };
},
watchArr (newVal) {
  console.log('监听：' + newVal);
},
created () {
  setTimeout(() =&gt; {
    this.watchArr = [1, 2, 3];
  }, 1000);
},

在比如使用splice(0,2,3)从数组下标0删除两个元素，并在下标0插入一个元]]></description><category></category></item><item><title><![CDATA[element-ui树形图，名字过长滚动条问题]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/112310244</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/112310244</guid><author>erdfty</author><pubDate>Thu, 07 Jan 2021 14:44:58 +0800</pubDate><description><![CDATA[&lt;el-tree
  ref="tree"
  v-loading="treeLoading"
  default-expand-all
  :expand-on-click-node="false"
  :data="treeData"
  :filter-node-method="filterNode"
  :props="defaultProps"
  style="margin-top: 8px;"
  @node-click="handleNodeClick"
/&gt;



/deep.]]></description><category></category></item><item><title><![CDATA[基于vuex的任务事项管理的小demo]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/109535525</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/109535525</guid><author>erdfty</author><pubDate>Fri, 06 Nov 2020 17:12:53 +0800</pubDate><description><![CDATA[基于vuex的任务管理的小demo，适合学习vuex，充分运用了vuex

程序demo页面



使用到的vuex方法总概况



大家可以自己看看，探讨一下，附git地址：https://github.com/erdfty/vuex-todos
]]></description><category></category></item><item><title><![CDATA[vue路由切换之淡入淡出的简单实现]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/108977518</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/108977518</guid><author>erdfty</author><pubDate>Fri, 09 Oct 2020 14:07:09 +0800</pubDate><description><![CDATA[路由跳转的淡入淡出

在开发中有一种需求叫高端、大气、上档次。所以作为一个前端有责任让你的程序开起来更酷炫。可以在页面切换时我们加入一些动画效果，提升我们程序的动效设计

想让路由有过渡动画，需要在&lt;router-view&gt;标签的外部添加&lt;transition&gt;标签，标签还需要一个name属性


&lt;transition name="fade" mode="in-out"&gt;

&lt;router-view &gt;&lt;/router-view&gt;

&lt;/.]]></description><category></category></item><item><title><![CDATA[css3字体背景颜色跑马灯]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/108977460</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/108977460</guid><author>erdfty</author><pubDate>Fri, 09 Oct 2020 14:04:31 +0800</pubDate><description><![CDATA[页面效果



CSS


  .title {
            border: 0px;
            font-size: 200%;
            font-weight: bold;
            float: left;
            line-height: 1.5;
            width: 100%;
            padding-left: 5px;
            margin-top:0px;
       ]]></description><category></category></item><item><title><![CDATA[Vue 实现复制功能,不需要任何结构内容直接复制方式]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/108850780</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/108850780</guid><author>erdfty</author><pubDate>Mon, 28 Sep 2020 15:38:04 +0800</pubDate><description><![CDATA[介绍：

在做复制文档功能时，考虑到是个不太会复用的小功能，最后选择直接用 document.execCommand 方法实现。

在查阅资料时候，发现其他人都需要在页面上写上结构、ID。然后捕捉某个ID获取内容，感觉很不方便。

使用：


methods: {
  copyShaneUrl(shareLink){
    var input = document.createElement("input");   // 直接构建input
    input.value = shareLink;  //]]></description><category></category></item><item><title><![CDATA[Vue 自定义指令实现点击DOM元素以外触发事件]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/108626229</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/108626229</guid><author>erdfty</author><pubDate>Wed, 16 Sep 2020 17:12:06 +0800</pubDate><description><![CDATA[1.directive.js


import Vue from "vue";

// 提交验证

Vue.directive("clickOutside", {
  // 初始化指令

  bind(el, binding, vnode) {
    function clickHandler(e) {
      // 这里判断点击的元素是否是本身，是本身，则返回

      if (el.contains(e.target)) {
        return false;
      }

   ]]></description><category></category></item><item><title><![CDATA[在Vue中使用JSX作为render]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/108623826</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/108623826</guid><author>erdfty</author><pubDate>Wed, 16 Sep 2020 15:54:11 +0800</pubDate><description><![CDATA[ant-design-vue开源了一段时间后，收到了一些反馈，尤其是Form组件上线后，很多用户对JSX的使用感到迷惑和不习惯，为此专门介绍下Vue JSX的使用姿势及注意事项。

Form组件的自动收集校验功能需要在JSX下使用，当然如果不需要自动收集校验，你依然可以使用template



Vue 推荐在绝大多数情况下使用template来创建你的 HTML。然而在一些场景中，你真的需要 JavaScript 的完全编程的能力，就需要使用render函数，它比 template 更接近编译器...]]></description><category></category></item><item><title><![CDATA[div在body中可以任意拖动]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/108451736</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/108451736</guid><author>erdfty</author><pubDate>Mon, 07 Sep 2020 17:10:11 +0800</pubDate><description><![CDATA[HTML代码


&lt;div id="idOuterDiv" class="CsOuterDiv"&gt;
 
&lt;/div&gt;

CSS代码




body {
    background-color:#232429;
}
.CsOuterDiv {
    width:256px;
    height:146px;
    background-color:white;
    position:absolute;
    top:50%;
    left:50%;
    tra.]]></description><category></category></item><item><title><![CDATA[js 实现 list转换成tree的方法示例（数组到树）]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/107691736</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/107691736</guid><author>erdfty</author><pubDate>Thu, 30 Jul 2020 15:42:07 +0800</pubDate><description><![CDATA[目标：

JS 将有父子关系的平行数组转换成树形数据

方法：双重遍历，一次遍历parentId,一次遍历id == parendId;

该方法应该能很容易被想到，实现起来也一步一步可以摸索出来；


const oldData = [

{id:1,name:'boss',parentId:0},

{id:2,name:'lily',parentId:1},

{id:3,name:'jack',parentId:1},

{id:4,name:'john',parentId:2},
...]]></description><category></category></item><item><title><![CDATA[vue中按钮防止暴力点击，多次提交数据的问题，组件通用化封装]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/107425211</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/107425211</guid><author>erdfty</author><pubDate>Sat, 18 Jul 2020 10:36:22 +0800</pubDate><description><![CDATA[方法1：用计时器改变按钮可点击状态


&lt;template&gt;
 &lt;div class="test"&gt;
  &lt;button @click="btnClick"&gt;button&lt;/button&gt;
 &lt;/div&gt;
&lt;/template&gt;


&lt;script&gt;
 export default {
  name: 'HelloWorld',
  data() {
   return {
    is_...]]></description><category></category></item><item><title><![CDATA[在vue中阻止click事件冒泡，防止触发冒泡另一个事件]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/107058439</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/107058439</guid><author>erdfty</author><pubDate>Wed, 01 Jul 2020 10:45:07 +0800</pubDate><description><![CDATA[使用vue阻止子级元素的click事件冒泡，很简单，用stop


&lt;div @click="test1()"&gt;
    &lt;span @click.stop="test2()"&gt;按钮1&lt;/span&gt;
    &lt;span&gt;按钮2&lt;/span&gt;
&lt;/div&gt;

这样点击div里面的按钮1，就不会触发div绑定时间test1()方法

...]]></description><category></category></item><item><title><![CDATA[网站前端如何实现HTML转PDF下载的两种方式]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/106695318</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/106695318</guid><author>erdfty</author><pubDate>Thu, 11 Jun 2020 19:25:56 +0800</pubDate><description><![CDATA[将HTML页面转化为PDF下载是前端经常会遇到的需求，下面就列举两种方式进行实现。以下两种方式默认都是在Vue项目环境下，其他框架项目自行灵活运用。


方式一：使用html2canvas和jspdf插件实现

该方式是通过html2canvas将HTML页面转换成图片，然后再通过jspdf将图片的base64生成为pdf文件。实现步骤如下：

1,下载插件模块


npm install html2canvas jspdf --save


2,定义功能实现方法

在项目工具方法存放文件夹utils中创.]]></description><category></category></item><item><title><![CDATA[JavaScript中将iso8859-1的字符转换成中文]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/106134284</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/106134284</guid><author>erdfty</author><pubDate>Fri, 15 May 2020 09:07:27 +0800</pubDate><description><![CDATA[var str = “ç\u0088±æ\u0088\u0091ä¸\u00ADå\u009B½”;
var utfstring =decodeURI(escape(str))


是用escape把iso8859-1的字符进行编码，然后再调用decodeURI按照utf8的方式进行解码。

当然上面的编码会把符号也会转义，这个时候只需按照下面的改下就可以了


var str = “ç\u0088±æ\u0088\u0091ä¸\u00ADå\u009B½”;
var utfstring =decode.]]></description><category></category></item><item><title><![CDATA[基于vue+iview实现省市区三级联动]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/105706882</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/105706882</guid><author>erdfty</author><pubDate>Thu, 23 Apr 2020 14:25:51 +0800</pubDate><description><![CDATA[表单关键代码


&lt;FormItem prop="province" label="省份"&gt;
    &lt;Select v-model="formValidate.province" placeholder="请选择省份" @on-change="changeProvince"&gt;
        &lt;Option v-for="(item,index) in provin...]]></description><category></category></item><item><title><![CDATA[VUE模仿百度搜索框，按上下方向键及回车键实现搜索选中效果]]></title><link>https://blog.youkuaiyun.com/erdfty/article/details/105658741</link><guid>https://blog.youkuaiyun.com/erdfty/article/details/105658741</guid><author>erdfty</author><pubDate>Tue, 21 Apr 2020 15:13:06 +0800</pubDate><description><![CDATA[逻辑介绍：
　　1、表单获取焦点时，显示搜索建议框
　　2、输入内容时，请求后台接口，并将返回的数据展示在搜索建议框内
　　3、表单获取焦点情况下，按键盘上下箭头可实现搜索列表项的切换，按回车可以选择当前激活的选项并获取当前选项的数据，然后你可以用数据做其他事了


&lt;template&gt;
  &lt;div class="container"&gt;
    &lt;div clas...]]></description><category></category></item></channel></rss>