一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - vue.js - vue實現禁止瀏覽器記住密碼功能的示例代碼

vue實現禁止瀏覽器記住密碼功能的示例代碼

2022-01-12 17:13crystal_yx vue.js

這篇文章主要介紹了vue實現禁止瀏覽器記住密碼功能的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

查找資料

網上查到的一些方法:

  • 使用 autocomplete="off"(現代瀏覽器許多都不支持)
  • 使用 autocomplete="new-password"
  • 在真正的賬號密碼框之前增加相同 name 的 input 框
  • 使用 readonly 屬性,在聚焦時移除該屬性
  • 初始化 input 框的 type 屬性為 text,聚焦時修改為 password
  • 使用 type="text",手動替換文本框內容為星號 “*” 或者 小圓點 “●”

實現過程

用到的字段

?
1
2
3
4
5
6
data() {
 return {
   username: '',
    password: '',
  }
}

由于 autocomplete="off" 現代瀏覽器已經不支持,所以直接放棄了對密碼框設置,直接使用 autocomplete="new-password" ,親測Chrome(v88.0.4324.104)、edge(v88.0.705.56)及火狐(v67)可用,但火狐(v85)還是會提示記住密碼。

?
1
2
3
<el-input v-model="username" type="text" name="text" placeholder="賬號" autocomplete="off"><i slot="prefix" class="el-input_icon el-icon-user"></i></el-input>
 
<el-input v-model="password" type="password" name="pwd" id="pwd" placeholder="密碼" autocomplete="new-password"></el-input>

參考:

https://developer.mozilla.org/zh-CN/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#browser_compatibility

在解決火狐高版本提示的過程中,試驗了3/4/5的方法,結果都不如人意,但發現火狐瀏覽器只要最終密碼框里的值為星號 “*” 或者小圓點 “●” 時,就不會提示記住密碼(不知是否正確,可自行測試),于是新增字段 pwdCover 用于關聯輸入框,實際傳值用 password。

templete

?
1
2
3
<el-input v-model="username" type="text" name="text" placeholder="賬號" autocomplete="off"><i slot="prefix" class="el-input_icon el-icon-user"></i></el-input>
 
<el-input v-model="pwdCover" type="password" name="pwd" id="pwd" placeholder="密碼" autocomplete="new-password"@input="setPassword"></el-input>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
script
data() {
 return {
   username: '',
    password: '',
    pwdCover: '',
  }
},
method: {
 login() {
   this.pwdCover = this.pwdCover.replace(/\S/g, '●');
    // 登錄請求,失敗時恢復pwdCover
    this.pwdCover = this.password;
  },
  setPassword(val) {
   this.password = val;
  }
}

自信滿滿發給了項目上的同事,結果翻車了,現場環境:

  • 操作系統:Windows7、Windows10
  • 瀏覽器:Chrome v74.0.3729.108

我安裝同版本的谷歌瀏覽器之后發現問題還是沒有出現,而我的操作系統是 Windows10,不知是哪里出了問題,最終還是選擇了方法6

最終

templete

?
1
2
3
4
5
6
<el-form-item>
 <el-input v-model="username" type="text" name="text" placeholder="賬號" autocomplete="off"><i slot="prefix" class="el-input_icon el-icon-user"></i></el-input>
</el-form-item>
<el-form-item>
 <el-input v-model="pwdCover" type="text" name="pwd" id="pwd" placeholder="密碼" autocomplete="off" @input="setPassword"><i slot="prefix" class="el-icon-lock"></i></el-input>
</el-form-item>

script

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
setPassword(val) {
  let reg = /[0-9a-zA-Z]/g; // 只允許輸入字母和數字
  let nDot = /[^●]/g; // 非圓點字符
  let index = -1; // 新輸入的字符位置
  let lastChar = void 0; // 新輸入的字符
  let realArr = this.password.split(''); // 真實密碼數組
  let coverArr = val.split(''); // 文本框顯示密碼數組
  let coverLen = val.length; // 文本框字符串長度
  let realLen = this.password.length; // 真實密碼長度
  // 找到新輸入的字符及位置
  coverArr.forEach((el, idx) => {
    if(nDot.test(el)) {
      index = idx;
      lastChar = el;
    }
  });
  // 判斷輸入的字符是否符合規范,不符合的話去掉該字符
  if(lastChar && !reg.test(lastChar)) {
    coverArr.splice(index, 1);
    this.pwdCover = coverArr.join('');
    return;
  }
  if (realLen < coverLen) {
    // 新增字符
    realArr.splice(index, 0, lastChar);
  } else if (coverLen <= realLen && index !== -1) {
    // 替換字符(選取一個或多個字符直接替換)
    realArr.splice(index, realLen - (coverLen - 1), lastChar);
  } else {
    // 刪除字符,因為 val 全是 ● ,沒有辦法匹配,不知道是從末尾還是中間刪除的字符,刪除了幾個,不好對 password 處理,所以可以通過光標的位置和 val 的長度來判斷
    let pos = document.getElementById('pwd').selectionEnd; // 獲取光標位置
    realArr.splice(pos, realLen - coverLen);
  }
  // 將 pwdCover 替換成 ●
  this.pwdCover = val.replace(/\S/g, '●');
  this.password = realArr.join('');
},

到此這篇關于vue實現禁止瀏覽器記住密碼功能的示例代碼的文章就介紹到這了,更多相關vue 禁止瀏覽器記住密碼內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/6924872565672706062

延伸 · 閱讀

精彩推薦
  • vue.jsVue2.x-使用防抖以及節流的示例

    Vue2.x-使用防抖以及節流的示例

    這篇文章主要介紹了Vue2.x-使用防抖以及節流的示例,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Kyara6372022-01-25
  • vue.jsVue多選列表組件深入詳解

    Vue多選列表組件深入詳解

    這篇文章主要介紹了Vue多選列表組件深入詳解,這個是vue的基本組件,有需要的同學可以研究下...

    yukiwu6752022-01-25
  • vue.js用vite搭建vue3應用的實現方法

    用vite搭建vue3應用的實現方法

    這篇文章主要介紹了用vite搭建vue3應用的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    Asiter7912022-01-22
  • vue.js梳理一下vue中的生命周期

    梳理一下vue中的生命周期

    看過很多人講vue的生命周期,但總是被繞的云里霧里,尤其是自學的同學,可能js的基礎也不是太牢固,聽起來更是吃力,那我就已個人之淺見,以大白話...

    CRMEB技術團隊7992021-12-22
  • vue.js詳解vue 表單綁定與組件

    詳解vue 表單綁定與組件

    這篇文章主要介紹了vue 表單綁定與組件的相關資料,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下...

    Latteitcjz6432022-02-12
  • vue.jsVue中引入svg圖標的兩種方式

    Vue中引入svg圖標的兩種方式

    這篇文章主要給大家介紹了關于Vue中引入svg圖標的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    十里不故夢10222021-12-31
  • vue.jsVue2.x 項目性能優化之代碼優化的實現

    Vue2.x 項目性能優化之代碼優化的實現

    這篇文章主要介紹了Vue2.x 項目性能優化之代碼優化的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    優小U9632022-02-21
  • vue.jsVue項目中實現帶參跳轉功能

    Vue項目中實現帶參跳轉功能

    最近做了一個手機端系統,其中遇到了父頁面需要攜帶參數跳轉至子頁面的問題,現已解決,下面分享一下實現過程,感興趣的朋友一起看看吧...

    YiluRen丶4302022-03-03
主站蜘蛛池模板: 国内精品麻豆 | 蜜柚精彩在线观看 | 欧洲肥女大肥臀tv | 91麻豆精东果冻天美传媒老狼 | 高清在线观看免费入口 | 污斗罗大陆 | 蜜桃免费| 特级夫妻大片免费在线播放 | 草草剧场 | 国产实拍会所女技师在线 | 国产在视频线在精品 | 九九大香尹人视频免费 | 免费一级欧美片在线观看 | 深夜激情网站 | 成年人免费观看的视频 | 18欧美同性videos可播放 | 香艳69xxxxx有声小说 | 香蕉成人999视频 | 欧美视频在线播放观看免费福利资源 | 楚乔传第二部免费完整 | 美女大鸡鸡 | 四虎影院精品在线观看 | 国产在线观看网站 | 国产高清自拍 | 91久色| 校园全黄h全肉细节文 | 99人中文字幕亚洲区 | 免费网站直接进入 | 久久高清一级毛片 | 午夜久 | 俄罗斯烧性春三级k8播放 | 日本免费久久久久久久网站 | 嫩草视频在线观看视频播放 | 精品国产视频 | 精品国产理论在线观看不卡 | 欧美黑人一级片 | 三级无删减高清在线影院 | 亚洲精品老司机福利在线播放 | 4hu永久地域网名入口 | 黑人疯狂巨大xxoo | 午夜国产理论 |