Xóa màu nền đầu vào cho Chrome tự động hoàn tất?


653

Trên biểu mẫu tôi đang làm việc, Chrome sẽ tự động điền các trường email và mật khẩu. Điều này là tốt, tuy nhiên, Chrome thay đổi màu nền thành màu vàng nhạt.

Thiết kế tôi đang thực hiện là sử dụng văn bản sáng trên nền tối, vì vậy điều này thực sự làm rối tung giao diện của biểu mẫu - Tôi có các hộp màu vàng và văn bản màu trắng gần như vô hình. Khi trường được tập trung, các trường trở lại bình thường.

Có thể ngăn Chrome thay đổi màu của các trường này không?


2
Tại đây bạn có thông tin rộng hơn: stackoverflow.com/questions/2338102/ từ
dasm

Xem câu trả lời của tôi cho một bài tương tự: stackoverflow.com/a/13691346/336235
Ernests Karlsons

Câu trả lời:


1170

Điều này hoạt động tốt, Bạn có thể thay đổi kiểu hộp đầu vào cũng như kiểu văn bản bên trong hộp nhập:

Ở đây bạn có thể sử dụng bất kỳ màu nào white, ví dụ #DDD, rgba(102, 163, 177, 0.45).

Nhưng transparentsẽ không làm việc ở đây.

/* Change the white to any color ;) */
input:-webkit-autofill,
input:-webkit-autofill:hover, 
input:-webkit-autofill:focus, 
input:-webkit-autofill:active  {
    -webkit-box-shadow: 0 0 0 30px white inset !important;
}

Ngoài ra, bạn có thể sử dụng điều này để thay đổi màu văn bản:

/*Change text in autofill textbox*/
input:-webkit-autofill {
    -webkit-text-fill-color: yellow !important;
}

Lời khuyên: Đừng sử dụng bán kính mờ quá mức trong hàng trăm hoặc hàng nghìn. Điều này không có lợi ích và có thể đặt tải bộ xử lý lên các thiết bị di động yếu hơn. (Cũng đúng với bóng thực tế, bên ngoài). Đối với hộp đầu vào bình thường có chiều cao 20px, 'bán kính mờ' 30px sẽ che phủ hoàn hảo.


1
Trong Chrome bây giờ, biểu định kiểu tác nhân người dùng hiển thị :-internal-autofill-previewed:-internal-autofill-selectedbút giả thay vì -webkit-autofill... Tuy nhiên, bí ẩn -webkit-autofillvẫn hoạt động. Cá nhân tôi không cần !important.
Andy

Tôi không cần bộ chọn giả di chuột / tiêu điểm / hoạt động
antoine129

318

Các giải pháp trước đây về việc thêm bóng hộp hoạt động tốt cho những người cần một nền màu vững chắc. Giải pháp khác của việc thêm một chuyển đổi hoạt động, nhưng phải đặt thời lượng / độ trễ sẽ có nghĩa là tại một thời điểm nào đó, nó có thể hiển thị lại.

Giải pháp của tôi là sử dụng các khung hình chính thay vào đó, theo cách đó nó sẽ luôn hiển thị màu sắc bạn chọn.

@-webkit-keyframes autofill {
    0%,100% {
        color: #666;
        background: transparent;
    }
}

input:-webkit-autofill {
    -webkit-animation-delay: 1s; /* Safari support - any positive time runs instantly */
    -webkit-animation-name: autofill;
    -webkit-animation-fill-mode: both;
}

Ví dụ Codepen: https://codepen.io/-Steve-/pen/dwgxPB


Hoạt động như quyến rũ.
Lalnuntluanga Chhakchhuak

1
Điều này chắc chắn hoạt động! (Chrome 79)
Lashae

3
Tôi thấy điều này tốt hơn câu trả lời được chấp nhận ... phương pháp bóng hộp rất thông minh và hoạt động tốt, nhưng khi người dùng đang chọn một giá trị để tự động điền, màu mặc định sẽ nhấp nháy nhanh trong trường đầu vào, có thể gây rắc rối nếu đầu vào của bạn có nền tối. Giải pháp này không có vấn đề như vậy. Chúc mừng!
skwidbreth

Hoàn hảo! Làm việc tốt hơn tôi mong đợi!
sdlins

2
Điều này hoạt động cho Vuetify 2 đặc biệt nếu bạn đặtcolor: inherit
Marc

275

Tôi có một giải pháp tốt hơn.

Đặt nền sang màu khác như bên dưới không giải quyết được vấn đề cho tôi vì tôi cần trường nhập liệu trong suốt

-webkit-box-shadow: 0 0 0px 1000px white inset;

Vì vậy, tôi đã thử một số thứ khác và tôi đã nghĩ ra điều này:

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    transition: background-color 5000s ease-in-out 0s;
}

7
Tuyệt vời, tôi cũng cần một nền tảng trong suốt. PS: đừng quên -webkit-text-fill-color: yellow !important;màu văn bản.
gfpacheco

Điều này vẫn sẽ hiển thị nền tự động điền khi đầu vào đã bị ẩn / hiển thị với display. Fiddle - Kiểm tra xem
Martin

27
Thay vì đặt transition-durationmức cao một cách lố bịch, tốt hơn là đặt transition-delaythay thế. Bằng cách đó, bạn sẽ giảm hơn nữa khả năng có bất kỳ thay đổi nào về màu sắc.
Shaggy

Việc transitionhack sẽ chỉ hoạt động nếu đầu vào không được tự động điền với mục nhập mặc định được trình duyệt ghi lại, nếu không, nền màu vàng sẽ vẫn ở đó.
guari

1
Giải pháp tuyệt vời .... nhưng tại sao nó lại hoạt động? Và tại sao cài đặt background-colorkhông hoạt động? Chrome cần khắc phục điều này !!
TetraDev

60

Đây là giải pháp của tôi, tôi đã sử dụng quá trình chuyển đổi và trì hoãn chuyển đổi do đó tôi có thể có một nền tảng trong suốt trên các trường đầu vào của mình.

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    -webkit-transition: "color 9999s ease-out, background-color 9999s ease-out";
    -webkit-transition-delay: 9999s;
}

6
Tôi đã đặt hình ảnh làm nền của trường đầu vào, giải pháp này sẽ loại bỏ màu vàng, nhưng hình nền vẫn bị ẩn
Matteo Tassinari

Giải pháp tốt nhất cho đến nay, hoạt động tuyệt vời với box-shadowxác thực hiện có
Yoann

chrome nói "color 9999s ease-out, background-color 9999s ease-out";không phải là sự thể hiện valide. Tôi đã sử dụng mã sau đó -webkit-transition: background-color 9999s ease-out;-webkit-text-fill-color: #fff !important;
naanace

1
làm việc nhưng không có trích dẫn kép cho tôi;)
Jon

@Yoann chính xác làm thế nào nó hoạt động với box-shadowxác nhận hiện tại của bạn ? Trong trường hợp của tôi, do quy tắc css này, bóng hộp màu đỏ tùy chỉnh của tôi (biểu thị lỗi đầu vào) bị trì hoãn, khiến người dùng tin rằng đầu vào gần đây nhất là không hợp lệ khi thực tế nó tốt.
Paul Razvan Berg

50

Điều này đã được thiết kế vì hành vi tô màu này là từ WebKit. Nó cho phép người dùng hiểu dữ liệu đã được điền sẵn. Lỗi 1334

Bạn có thể tắt tự động hoàn tất bằng cách thực hiện (hoặc trên điều khiển biểu mẫu cụ thể:

<form autocomplete="off">
...
</form

Hoặc bạn có thể thay đổi màu của tự động điền bằng cách thực hiện:

input:-webkit-autofill {
    color: #2a2a2a !important;
}

Lưu ý, có một lỗi đang được theo dõi để điều này hoạt động trở lại: http://code.google.com.vn/p/chromium/issues/detail?id=46543

Đây là một hành vi WebKit.


22
cảm ơn nhưng quy tắc CSS của webkit không hoạt động. Biểu định kiểu tác nhân người dùng luôn ghi đè màu nền, ngay cả với (a) được đặt thành !importantvà (b) được nhắm mục tiêu với ID để có độ đặc hiệu cao hơn. Có vẻ như Chrome sẽ luôn ghi đè lên nó. Xóa tự động hoàn tất có vẻ hiệu quả, nhưng đó thực sự không phải là điều tôi muốn làm.
DisgruntledGoat

1
Một số người có cùng một vấn đề, bạn đã kiểm tra bài lỗi chưa? code.google.com/p/chromium/issues/detail?id=1334
Mohamed Mansour

6
Chrome chặn mọi nỗ lực CSS để ghi đè màu vàng đó. Thiết lập autocomplete="off"chắc chắn sẽ nâng cao các vấn đề tiếp cận. Tại sao câu trả lời này được đánh dấu là chính xác?
João

2
Đây là một giải pháp tốt nhưng nếu bạn đang sử dụng React, nó sẽ phàn nàn rằng tự động hoàn tất là một thuộc tính DOM không xác định. Do đó, nó thực sự tự động hoàn thành (lưu ý ghi chú).
Tim Scollick

2
Tắt tự động hoàn tất là một hack không phải là một giải pháp
Paullo

30

Một cách giải quyết có thể có lúc này là đặt bóng "mạnh" bên trong:

input:-webkit-autofill {
    -webkit-box-shadow:0 0 0 50px white inset; /* Change the color to your own background color */
    -webkit-text-fill-color: #333;
}

input:-webkit-autofill:focus {
    -webkit-box-shadow: /*your box-shadow*/,0 0 0 50px white inset;
    -webkit-text-fill-color: #333;
}  

2
Đây là giải pháp thực sự hiệu quả, chúng tôi không muốn bỏ qua nền vàng chỉ một số lần, vì câu trả lời được chấp nhận sẽ dẫn đến.
davidkonrad

22

Hãy thử điều này để ẩn kiểu tự động điền

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:active,
input:-webkit-autofill:focus {
    background-color: #FFFFFF !important;
    color: #555 !important;
    -webkit-box-shadow: 0 0 0 1000px white inset !important;
    -webkit-text-fill-color: #555555 !important;
    }

Đối với sự tò mò, màu nền không có hiệu lực. -Webkit-box-Shadow là bit thông minh ghi đè nền màu vàng trong Chrome
Geuis

19

Tất cả các câu trả lời trên đã làm việc nhưng có lỗi của họ. Đoạn mã dưới đây là sự kết hợp của hai trong số các câu trả lời trên hoạt động hoàn hảo không chớp mắt.

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    transition: background-color 5000s ease-in-out 0s;
    -webkit-box-shadow: 0 0 0px 1000px #fff inset;
}

Tôi đã đặt hình ảnh làm nền của trường đầu vào, giải pháp này sẽ loại bỏ màu vàng, nhưng hình nền vẫn bị ẩn
Matteo Tassinari

Đây là người duy nhất làm việc cho tôi trong Chrome 83. Người được bình chọn nhiều nhất đang hoạt động 'cho đến Chrome 82.
sdlins

19

SASS

input:-webkit-autofill

  &,
  &:hover,
  &:focus,
  &:active
    transition-delay: 9999s
    transition-property: background-color, color

1
Điều này thực sự hiệu quả với tôi vì câu trả lời được chấp nhận lóe lên một màu vàng nhạt.
CleoR

giải pháp tốt nhất
imho

15

Sau 2 giờ tìm kiếm, có vẻ như google vẫn ghi đè lên màu vàng bằng cách nào đó nhưng tôi đã khắc phục nó. Đúng rồi. nó sẽ làm việc cho di chuột, tập trung vv là tốt. tất cả bạn phải làm là thêm! quan trọng với nó.

 input:-webkit-autofill,
 input:-webkit-autofill:hover,
 input:-webkit-autofill:focus,
 input:-webkit-autofill:active {
 -webkit-box-shadow: 0 0 0px 1000px white inset !important;
  }

điều này sẽ loại bỏ hoàn toàn màu vàng khỏi các trường đầu vào


11

Thêm một giờ chậm trễ sẽ tạm dừng mọi thay đổi css trên phần tử đầu vào.
Điều này là tốt hơn thay vì thêm hình ảnh chuyển tiếp hoặc bóng bên trong.

input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill{
  transition-delay: 3600s;
}

10

Ngoài ra:

input:-webkit-autofill{
-webkit-box-shadow: 0 0 0px 1000px white inset;
}

Bạn cũng có thể muốn thêm

input:-webkit-autofill:focus{
-webkit-box-shadow: 0 0 0px 1000px white inset, 0 0 8px rgba(82, 168, 236, 0.6);
}

Mặt khác, khi bạn nhấp vào đầu vào, màu vàng sẽ quay trở lại. Đối với tiêu điểm, nếu bạn đang sử dụng bootstrap, phần thứ hai dành cho đường viền làm nổi bật 0 0 8px rgba (82, 168, 236, 0.6);

Như vậy nó sẽ trông giống như bất kỳ đầu vào bootstrap.


10

Tôi gặp vấn đề khi không thể sử dụng bóng hộp vì tôi cần trường đầu vào trong suốt. Đó là một chút hack nhưng CSS thuần túy. Đặt quá trình chuyển đổi thành một khoảng thời gian rất dài.

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
transition: background-color 50000s ease-in-out 0s, color 5000s ease-in-out 0s;
}

Tính đến thời điểm hiện tại trong Chrome 50.xx mới nhất, IT IS hoạt động hoàn toàn tốt. Cảm ơn rất nhiều!
vivekkupadhyay

2
Thay vì đặt transition-durationmức cao một cách lố bịch, tốt hơn là đặt transition-delaythay thế. Bằng cách đó, bạn sẽ giảm hơn nữa khả năng có bất kỳ thay đổi nào về màu sắc.
Xù xì

@Shaggy cảm ơn, tôi chỉ chuyển nó sang một sự chậm trễ. Đẹp hơn nhiều.
Alex

9

Hãy thử điều này: Tương tự như câu trả lời @ Nathan-trắng ở trên với các điều chỉnh nhỏ.

/* For removing autocomplete highlight color in chrome (note: use this at bottom of your css file). */

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
    transition: all 5000s ease-in-out 0s;
    transition-property: background-color, color;
}

Đây là câu trả lời tốt nhất sau khi thử tất cả các câu trả lời.
gfcodix

8

Nếu bạn muốn giữ nguyên chức năng tự động hoàn thành, bạn có thể sử dụng một chút jQuery để xóa kiểu dáng của Chrome. Tôi đã viết một bài viết ngắn về nó ở đây: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
$(window).load(function(){
    $('input:-webkit-autofill').each(function(){
        var text = $(this).val();
        var name = $(this).attr('name');
        $(this).after(this.outerHTML).remove();
        $('input[name=' + name + ']').val(text);
    });
});}

Đây có vẻ là giải pháp tốt nhất, mặc dù nó chặn kiểm tra thư của Kicksend . Bất kỳ ý tưởng về làm thế nào để làm việc này xung quanh?
João

Đây không phải là một giải pháp tốt kể từ đó mật khẩu tự động hoàn thành của Google chrome ngừng hoạt động. Đó là ban đầu bạn điền tên và Google chrome tự động điền mật khẩu. Tuy nhiên, một khi javascript ở trên thực thi, tên sẽ bị xóa và được đặt lại và mật khẩu được điền tự động sẽ bị mất
vanval

6

Tôi đã phát triển một giải pháp khác bằng JavaScript mà không cần JQuery. Nếu bạn thấy điều này hữu ích hoặc quyết định đăng lại giải pháp của tôi, tôi chỉ yêu cầu bạn bao gồm tên của tôi. Thưởng thức. - Daniel Fairweather

var documentForms = document.forms;

for(i = 0; i < documentForms.length; i++){
    for(j = 0; j < documentForms[i].elements.length; j++){
        var input = documentForms[i].elements[j];

        if(input.type == "text" || input.type == "password" || input.type == null){
            var text = input.value;
            input.focus();
            var event = document.createEvent('TextEvent');
            event.initTextEvent('textInput', true, true, window, 'a');
            input.dispatchEvent(event);
            input.value = text;
            input.blur();
        }
    }
}

Mã này dựa trên thực tế là Google Chrome sẽ loại bỏ kiểu Webkit ngay khi nhập văn bản bổ sung. Chỉ cần thay đổi giá trị trường đầu vào là không đủ, Chrome muốn có một sự kiện. Bằng cách tập trung vào từng trường nhập (văn bản, mật khẩu), chúng tôi có thể gửi một sự kiện bàn phím (chữ 'a') và sau đó đặt giá trị văn bản về trạng thái trước đó (văn bản tự động điền). Hãy nhớ rằng mã này sẽ chạy trong mọi trình duyệt và sẽ kiểm tra mọi trường đầu vào trong trang web, điều chỉnh nó phù hợp với nhu cầu của bạn.


tốt, nó đã làm việc cho hầu hết các phần .. nó không may xóa mật khẩu của tôi. Cố gắng lấy nó để lưu mật khẩu trước và đặt lại mật khẩu sau các vòng lặp nhưng chrome dường như có một số vấn đề với điều đó. mmmm
Dustin Silk

6

Tôi có một giải pháp CSS thuần sử dụng Bộ lọc CSS.

filter: grayscale(100%) brightness(110%);

Bộ lọc thang độ xám thay thế màu vàng bằng màu xám, sau đó độ sáng sẽ loại bỏ màu xám.

XEM CODEPEN


Điều này không làm việc cho tôi?
Ikechukwu Eze

5

Điều này sẽ làm việc cho đầu vào, textarea và chọn ở trạng thái bình thường, di chuột, tập trung và hoạt động.

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
textarea:-webkit-autofill:active,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus,
select:-webkit-autofill:active,
{
    -webkit-box-shadow: 0 0 0px 1000px white inset !important;
}

Đây là phiên bản SCSS của giải pháp trên cho những người đang làm việc với SASS / SCSS.

input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill
{
    &, &:hover, &:focus, &:active
    {
        -webkit-box-shadow: 0 0 0px 1000px white inset !important;
    }
}

Đẹp một, và thanx cho mã SASS!
Bernoulli IT

4

Đối với những người đang sử dụng La bàn:

@each $prefix in -webkit, -moz {
    @include with-prefix($prefix) {
        @each $element in input, textarea, select {
            #{$element}:#{$prefix}-autofill {
                @include single-box-shadow(0, 0, 0, 1000px, $white, inset);
            }
        }
    }
}

3

Tôi từ bỏ!

Vì không có cách nào để thay đổi màu của đầu vào bằng tự động hoàn tất, tôi quyết định vô hiệu hóa tất cả chúng bằng jQuery cho các trình duyệt webkit. Như thế này:

if (/webkit/.test(navigator.userAgent.toLowerCase())) {
    $('[autocomplete="on"]').each(function() {
        $(this).attr('autocomplete', 'off');
    });
}

3

Tôi đã có một giải pháp nếu bạn muốn ngăn tự động điền từ google chrome nhưng nó hơi "dao rựa", chỉ cần xóa lớp mà google chrome thêm vào các trường đầu vào đó và đặt giá trị thành "" nếu bạn không cần hiển thị lưu trữ dữ liệu sau khi tải.

$(document).ready(function () {
    setTimeout(function () {
            var data = $("input:-webkit-autofill");
            data.each(function (i,obj) {
            $(obj).removeClass("input:-webkit-autofill");
                    obj.value = "";
            });
    },1);           
});

3

Giải pháp của Daniel Fairweather ( Xóa màu nền đầu vào cho tự động hoàn thành Chrome? ) (Tôi rất muốn nâng cấp giải pháp của mình, nhưng vẫn cần 15 đại diện) hoạt động thực sự tốt. Có một sự khác biệt rất lớn với hầu hết các giải pháp nâng cao: bạn có thể giữ hình nền! Nhưng một chút sửa đổi (chỉ cần kiểm tra Chrome)

Và bạn cần lưu ý, nó CHỈ hoạt động trên các trường nhìn thấy !

Vì vậy, nếu bạn đang sử dụng $ .show () cho biểu mẫu của mình, bạn cần chạy mã này sau sự kiện show ()

Giải pháp đầy đủ của tôi (Tôi có một nút hiển thị / ẩn cho hình thức đăng nhập):

 if (!self.isLoginVisible()) {
        var container = $("#loginpage");
        container.stop();
        self.isLoginVisible(true);
        if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {

            var documentForms = document.forms;
            for (i = 0; i < documentForms.length; i++) {
                for (j = 0; j < documentForms[i].elements.length; j++) {
                    var input = documentForms[i].elements[j];

                    if (input.type == "text" || input.type == "password" || input.type == null) {
                        var text = input.value;
                        input.focus();
                        var event = document.createEvent('TextEvent');
                        event.initTextEvent('textInput', true, true, window, 'a');
                        input.dispatchEvent(event);
                        input.value = text;
                        input.blur();
                    }
                }
            }
        }

    } else {
        self.hideLogon();
    }

Xin lỗi một lần nữa, tôi muốn nó là một bình luận.

Nếu bạn muốn, tôi có thể đặt một liên kết đến trang web nơi tôi đã sử dụng nó.


3

và điều này làm việc cho tôi (Chrome 76 đã thử nghiệm)

input:-internal-autofill-selected {
    background-color: transparent;
}

3

Tôi đã thử gần như tất cả các giải pháp trên. Không có gì làm việc cho tôi. Cuối cùng đã làm việc với giải pháp này. Tôi hy vọng ai đó giúp đỡ điều này.

/* Change Autocomplete styles in Chrome*/
input:-webkit-autofill,
input:-webkit-autofill:hover, 
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
  border: 1px solid green;
  -webkit-text-fill-color: green;
  -webkit-box-shadow: 0 0 0px 1000px #000 inset;
  transition: background-color 5000s ease-in-out 0s;
}

Điều này không hoạt động (nữa) và đã được sao chép từ CSS Tricks BTW
Bernoulli IT

1
Điều này làm việc cho tôi.
AzizStark

2

Cảm ơn Benjamin!

Giải pháp Mootools phức tạp hơn một chút, vì tôi không thể có được các trường bằng cách sử dụng $('input:-webkit-autofill'), vì vậy những gì tôi đã sử dụng là như sau:

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {

  window.addEvent('load', function() {
    setTimeout(clearWebkitBg, 20);
    var elems = getElems();
    for (var i = 0; i < elems.length; i++) {
      $(elems[i]).addEvent('blur', clearWebkitBg);
    }
  });
}
function clearWebkitBg () {
  var elems = getElems();
  for (var i = 0; i < elems.length; i++) {
    var oldInput = $(elems[i]);
    var newInput = new Element('input', {
      'name': oldInput.get('name'),
      'id': oldInput.get('id'),
      'type': oldInput.get('type'),
      'class': oldInput.get('class'),
      'value': oldInput.get('value')
    });
    var container = oldInput.getParent();
    oldInput.destroy();
    container.adopt(newInput);
  }
}
function getElems() {
  return ['pass', 'login']; // ids
}

2

Không có giải pháp nào phù hợp với tôi, bóng trong sẽ không hoạt động với tôi vì các đầu vào có nền mờ được phủ lên trên nền trang.

Vì vậy, tôi đã tự hỏi: "Làm thế nào để Chrome xác định những gì nên được tự động điền trên một trang nhất định?"

"Nó có tìm id đầu vào, tên đầu vào không? Id mẫu? Hành động biểu mẫu?"

Thông qua thử nghiệm của tôi với tên người dùng và mật khẩu đầu vào, chỉ có hai cách tôi thấy sẽ khiến Chrome không thể tìm thấy các trường nên được tự động điền:

1) Đặt mật khẩu đầu vào trước đầu vào văn bản. 2) Cung cấp cho họ cùng tên và id ... hoặc không có tên và id nào cả.

Sau khi tải trang, với javascript, bạn có thể tự động thay đổi thứ tự của các đầu vào trên trang hoặc tự động cung cấp cho chúng tên và id của chúng ...

Và Chrome không biết điều gì đã xảy ra ... tự động hoàn tất bị hỏng!

Hack điên, tôi biết. Nhưng nó làm việc cho tôi.

Chrome 34.0.1847.116, OSX 10.7.5


2

Thật không may, không có giải pháp nào ở trên cho tôi vào năm 2016 (một vài năm sau câu hỏi)

Vì vậy, đây là giải pháp tích cực mà tôi sử dụng:

function remake(e){
    var val = e.value;
    var id = e.id;
    e.outerHTML = e.outerHTML;
    document.getElementById(id).value = val;
    return true;
}

<input id=MustHaveAnId type=text name=email autocomplete=on onblur="remake(this)">

Về cơ bản, nó xóa thẻ trong khi lưu giá trị và tạo lại nó, sau đó đặt lại giá trị.


Giải pháp của namrouti có giá trị hoạt động tốt với tôi trên Chrome 51.0.2704.106 / OSX 10.11.5.
oens

2

tôi dùng cái này làm việc cho tôi. loại bỏ nền màu vàng của trường.

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active,
input:-webkit-autofill:valid,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus
{
    -webkit-transition-delay: 99999s;
    -webkit-text-fill-color:#D7D8CE;
}

1

Như đã đề cập trước đó, inset -webkit-box-Shadow đối với tôi hoạt động tốt nhất.

/* Code witch overwrites input background-color */
input:-webkit-autofill {
     -webkit-box-shadow: 0 0 0px 1000px #fbfbfb inset;
}

Ngoài ra đoạn mã để thay đổi màu văn bản:

input:-webkit-autofill:first-line {
     color: #797979;
}

1

Điều này làm việc cho tôi:

padding: 5px;
background-clip: content-box;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.