亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢測瀏覽器自動填充

檢測瀏覽器自動填充

holdtom 2019-07-02 17:14:57
檢測瀏覽器自動填充如何判斷瀏覽器是否已自動填充文本框?特別是與用戶名和密碼框,自動填充周圍的頁面加載。我的第一個問題是,在頁面加載序列中什么時候會發生這種情況?是在文件之前還是之后準備好了?第二,如何用邏輯來判斷是否發生了這種情況?我并不是想阻止這一切的發生,只想和事件掛鉤。最好是這樣的:if (autoFilled == true) {} else {}如果可能的話,我想看看你的答案。可能重復DOM事件用于瀏覽器密碼自動填充?瀏覽器自動填充和Javascript觸發事件-這兩個問題并不能真正解釋觸發了什么事件,它們只是不斷地重新檢查文本框(對性能不好!)
查看完整描述

3 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

問題是,不同的瀏覽器以不同的方式處理自動填充。有些人分派更改事件,有些人沒有。因此,當瀏覽器自動完成輸入字段時,幾乎不可能將事件掛鉤到觸發的事件上。

  • 更改不同瀏覽器的事件觸發器:

    • 對于用戶名/密碼字段:

    • 對于其他表單字段:

    1. IE7和IE8不發送更改事件。
    2. 當用戶從字段中的建議和選項卡列表中選擇一個值時,Firefox 4確實會分派更改事件。
    3. Chrome 9不發送更改事件。
    4. Safari 5確實會分派更改事件。
    1. Firefox 4、IE7和IE8不發送更改事件。
    2. Safari 5和Chrome 9確實分派了更改事件。

您最好的選擇是禁用窗體的自動完成功能。autocomplete="off"在您的表單或定期輪詢中查看是否已填充。

關于它是在文檔上還是在文檔之前填寫的問題,請再次回答,它因瀏覽器而異,甚至不同版本。對于用戶名/密碼字段,只有在選擇“用戶名密碼”字段時才填寫。因此,如果您試圖附加到任何事件,那么總共會有一個非?;靵y的代碼。

你可以好好讀一讀這里


查看完整回答
反對 回復 2019-07-02
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

WebKit瀏覽器的解決方案

從MDN文檔中獲取-webkit-自動填充css偽類:

當一個元素的值由瀏覽器自動填充時,該:-webkit自動填充css偽類匹配。

我們可以定義一個空白過渡所需CSS規則<input>元素一旦成為:-webkit-autofill愛德。然后JS將能夠連接到animationstart事件。

學分Klarna UI團隊。在這里看到它們的很好的實現:


查看完整回答
反對 回復 2019-07-02
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

為了防止有人在尋找解決方案(就像我今天一樣),要偵聽瀏覽器的自動填充更改,下面是我構建的自定義jQuery方法,以便在向輸入中添加更改偵聽器時簡化過程:

    $.fn.allchange = function (callback) {
        var me = this;
        var last = "";
        var infunc = function () {
            var text = $(me).val();
            if (text != last) {
                last = text;
                callback();
            }
            setTimeout(infunc, 100);
        }
        setTimeout(infunc, 100);
    };

你可以這樣稱呼它:

$("#myInput").allchange(function () {
    alert("change!");});


查看完整回答
反對 回復 2019-07-02
  • 3 回答
  • 0 關注
  • 1111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號