vue項目--favicon設置以及動態修改favicon


最近寫公司項目時,動態更新favicon

 

動態更新之前需要有一個默認的favicon。

 

目前vue-cli搭建的vue項目里面已經有了一個static文件夾,存放靜態文件。

favicon圖片放到該文件夾下。

然后再index.html中添加:

<link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico">

然后刷新瀏覽器,就會更新。

如果沒有效果,則查看你的build文件夾下:build/webpack.dev.conf.js中。(到這個步驟之前我的是出現了,並且正常顯示,如果不顯示,則配置一下吧。)

 

 

new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true,
      favicon:'../stastic/favicon.ico'
    }),

 

到這個時候,頁面的favicon已經可以正常顯示了。

然而,如何從服務器動態獲取圖片呢,這樣以來就可以像上傳文件一樣,隨意更換favicon。先看一下stackoverflow上的回答

(function() {
    var link = document.querySelector("link[rel*='icon']") || document.createElement('link');
    link.type = 'image/x-icon';
    link.rel = 'shortcut icon';
    link.href = 'http://www.stackoverflow.com/favicon.ico';
    document.getElementsByTagName('head')[0].appendChild(link);
})();

動態創建link標簽,然后添加元素。我目前寫的項目是從前端上傳到服務器的圖片,關於如何上傳圖片,額,粘貼一下代碼吧。

 logoFirstChange(val) {
        let that = this;  
        let Fr = new FileReader;
        let file = val.target.files[0];
//獲取需要更換的img的id,我這里更換的圖片比較多,並且方法都一樣,所以寫同樣的方法里面了。
        let img = document.getElementById(val.srcElement.name.split('|')[0]);
        Fr.readAsDataURL(file);
        Fr.onloadend = function () {
          img.src = this.result;
        };
        let fd = new FormData();
//addend('參數名','參數值'),參數名需要和后端對應
        fd.append('InputFile', file);
        fd.append('logo_id', val.srcElement.name.split('|')[1]);
//vue項目中為了方便更改一下axios原型鏈,其實就是發送一個axios請求。這里正常的axios就行,不用謝Blob類型,沒什么用,我當時是為了測試一下這個類型。
        that.Axios.post(that.prefix + '/yr_logo/logo_update/',fd,new Blob([fd], { type: 'multipart/form-data' }))
          .then(function (res) {
            if (res.data.status == 1) {
              util.notification('success', '成功', res.data.success_msg);
            } else {
              util.notification('error', '失敗', res.data.error_msg);
            }
              img.value = '';
          })
          .catch(function (err) {
            console.log(err);
          });
//上傳之后修改了一下axios的原型鏈,因為全局其他頁面都需要。(這里忽略)
        that.Axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
        that.Axios.defaults.transformRequest  = function (data) {
          let ret = '';
          for (let it in data) {
            ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
          }
          return ret.slice(0, ret.length - 1);
        }
      }

 

先這樣吧,語言組織能力不怎么樣,想起來什么再補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM