<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[Vue实现全站页面添加水印功能]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Thu, 22 Sep 2022 07:46:18 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	创建watermark.js文件<br/><br/>let watermark = &#123;&#125;<br/><br/>let setWatermark = (str) =&gt; &#123;<br/> let id = &#039;1.23452384164.123412416&#039;;<br/><br/> if (document.getElementById(id) !== null) &#123;<br/> document.body.removeChild(document.getElementById(id));<br/> &#125;<br/><br/> //创建一个画布<br/> let can = document.createElement(&#039;canvas&#039;);<br/> //设置画布的长宽<br/> can.width = 120;<br/> can.height = 120;<br/><br/> let cans = can.getContext(&#039;2d&#039;);<br/> //旋转角度<br/> cans.rotate(-15 * Math.PI / 180);<br/> cans.font = &#039;18px Vedana&#039;;<br/> //设置填充绘画的颜色、渐变或者模式<br/> cans.fillStyle = &#039;rgba(200, 200, 200, 0.40)&#039;;<br/> //设置文本内容的当前对齐方式<br/> cans.textAlign = &#039;left&#039;;<br/> //设置在绘制文本时使用的当前文本基线<br/> cans.textBaseline = &#039;Middle&#039;;<br/> //在画布上绘制填色的文本（输出的文本，开始绘制文本的X坐标位置，开始绘制文本的Y坐标位置）<br/> cans.fillText(str, can.width / 8, can.height / 2);<br/><br/> let div = document.createElement(&#039;div&#039;);<br/> div.id = id;<br/> div.style.pointerEvents = &#039;none&#039;;<br/> div.style.top = &#039;30px&#039;;<br/> div.style.left = &#039;0px&#039;;<br/> div.style.position = &#039;fixed&#039;;<br/> div.style.zIndex = &#039;100000&#039;;<br/> div.style.width = document.documentElement.clientWidth + &#039;px&#039;;<br/> div.style.height = document.documentElement.clientHeight + &#039;px&#039;;<br/> div.style.background = &#039;url(&#039; + can.toDataURL(&#039;image/png&#039;) + &#039;) left top repeat&#039;;<br/> document.body.appendChild(div);<br/> return id;<br/>&#125;<br/><br/>// 该方法只允许调用一次<br/>watermark.set = (str) =&gt; &#123;<br/> let id = setWatermark(str);<br/> setInterval(() =&gt; &#123;<br/> if (document.getElementById(id) === null) &#123;<br/>&nbsp;&nbsp;id = setWatermark(str);<br/> &#125;<br/> &#125;, 500);<br/> window.onresize = () =&gt; &#123;<br/> setWatermark(str);<br/> &#125;;<br/>&#125;<br/><br/>export default watermark;<br/><br/><br/><br/>具体用法：<br/><br/>1.在App.vue文件中，导入该文件<br/><br/>import Watermark from &#039;@/common/js/watermark&#039;; //路径不要写错<br/>2.在mounted函数中调用<br/><br/>mounted: function () &#123;<br/> Watermark.set(&quot;水印内容&quot;)<br/>&#125;<br/>注意内容：<br/><br/>一般我们的水印内容是当前用户的id或者姓名，在App.vue文件的mounted函数中有可能获取不到Vuex的用户信息。<br/><br/>我们一般在路由跳转的时候来进行用户的登录和权限的判断，所以我们可以将调用水印的方法放在router.afterEach()方法中，在router.beforeEach（）方法中判断用户的登录和权限的判断，所以router.afterEach()方法中一定可以获取到vuex中的用户信息。<br/><br/>示例：<br/><br/>router.beforeEach((to, from, next) =&gt; &#123;<br/> // 登录判断<br/> store.dispatch(&#039;getuser&#039;).then((user) =&gt; &#123;<br/> if (to.path === &#039;/&#039;) &#123;<br/>&nbsp;&nbsp;if (user.isLeader) &#123;<br/>&nbsp;&nbsp;next(&#039;/Summary&#039;);<br/>&nbsp;&nbsp;&#125; else &#123; next(&#039;/list&#039;); &#125;<br/> &#125; else &#123;<br/>&nbsp;&nbsp;next();<br/> &#125;<br/> &#125;).catch((error) =&gt; &#123;<br/> if (error.message === &#039;noUser&#039;) &#123;<br/>&nbsp;&nbsp;//返回登录界面<br/> &#125; else &#123;<br/>&nbsp;&nbsp;Dialog.confirm(&#123;<br/>&nbsp;&nbsp;title: &#039;服务器错误&#039;,<br/>&nbsp;&nbsp;message: &#039;获取用户信息失败,可尝试重新进入系统。&#039;,<br/>&nbsp;&nbsp;showCancelButton: false,<br/>&nbsp;&nbsp;showConfirmButton: false<br/>&nbsp;&nbsp;&#125;);<br/> &#125;<br/> &#125;);<br/>&#125;);<br/>router.afterEach((to) =&gt; &#123;<br/> /* 路由发生变化修改页面title */<br/> if (to.meta.title) &#123;<br/> changTitle(to.meta.title);<br/> &#125;<br/> Watermark.set(store.state.user.userId);<br/>&#125;);<br/>以上这篇Vue实现页面添加水印功能就是分享给大家的全部内容了，希望能给大家一个参考。
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论] Vue实现全站页面添加水印功能]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>