Chrome 양식 자동 완성 및 노란색 배경


245

Chrome 및 양식 자동 완성 기능에 디자인 문제가 있습니다. Chrome에서 일부 로그인 / 비밀번호를 기억하면 배경색이 노란색으로 바뀝니다.

스크린 샷은 다음과 같습니다.

대체 텍스트 대체 텍스트

그 배경을 제거 하거나이 자동 채우기를 비활성화하는 방법은 무엇입니까?


4
또한 이에 대한 답변이 있는지 확인하고 싶습니다.
— Kyle

12
스타일링의 경우이 색상은 Chrome의 입력 태그 개요와 같이 디자인 요소에 심각하게 영향을 줄 수 있으므로 색상을 끄는 것보다 색상을 변경하고 싶습니다.
— Kyle

3
Google 은이 문제를 어느 정도 인정합니다.
— MitMaro

1
자동 완성 기능을 비활성화하려면 입력 요소 에 autocomplete = "off" 를 추가 하십시오 (예 : <input type = "text"id = "input"autocomplete = "off">
— joe_young

1
추가 정보 : 암호 필드가있을 때 이것에 물 렸습니다. 필드가 자동으로 강조 표시되고 (노란색) 이상한 값으로 채워졌습니다. 그리고 여기에서 해결책을 찾았습니다 : zigpress.com/2014/11/22/stop-chrome-messing-forms ... 해결책은 "Chrome 자동 채우기 사용 중지"섹션에 있습니다 ... 숨겨진 필드 추가.
— 코 코르다 라카

답변:


282

"흰색"을 원하는 색상으로 변경하십시오.

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

4
좋은 생각입니다. 더 약한 장치에서 잠재적 인 성능 저하를 피하기에 충분할 때마다 (일반 크기 입력 상자) 50 또는 100을 사용합니다. (0 이후 px가 필요 없음)
— Frank Nocke

4
이 핵을 사랑해! 좋은 생각 ... 모두 자동 완성을 제거하고 있습니다. 나는 자동 채우기를 유지하고 추악한 노란색을 타려고했습니다.
— 트래비스

1
입력 필드 뒤에 배경 이미지가 있으면 전체 영역을 흰색으로 채우면 작동하지 않습니다. jquery 기반 솔루션을 포함 하여이 페이지의 모든 솔루션을 시도했지만 그들은 나를 위해 작동하지 않았습니다. 결국 필드에 autocomplete = "off"를 추가해야했습니다.
— Myke Black

19
또한 스타일 텍스트 색상을 사용 -webkit-text-fill-color- 볼 이 질문
— 어윈 Wessels가

2
오류가 있습니다. 어쩌면 구문이 변경되지 않았지만 지금 작동합니다.box-shadow: inset 0 0 0 1000px white !important;
— Muhammad Umer

49

투명한 입력 필드를 원한다면 전환 및 전환 지연을 사용할 수 있습니다.

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

RGBA 색상 값이 작동하지 않아 나에게 가장 적합한 솔루션입니다 -webkit-box-shadow. 또한이 선언에 색상 값을 제공 할 필요가 없습니다. 기본값은 여전히 ​​적용됩니다.
— Sébastien

더 좋은 것은 색상 혼합을 전혀하지 않기 위해 지속 시간 대신 전환 지연을 사용하는 것입니다.
— antoine129

좋은하지만 파일의 마지막에이 규칙을 이동했다 어떤 이유로, 그렇지 않으면 일을하지 않았다위한
— 이고르 Mizak

내가 찾은 것! 감사합니다!
— Akhmedzianov Danilian

43

여기에 해결책 :

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);
        });
    });
}

이것은 효과가 있었지만 최고의 대답은 그렇지 않았습니다. 그러나 나는 a) 이후 행동을 바꾸려고하지 않을 것이라고 생각합니다. 이것은 자바 스크립트이므로 작동하고 초 (js 가로 드 될 때까지)와 b) 사이에 초가 있습니다. 기본 동작에 익숙한 크롬 사용자를 혼동시킬 수 있습니다.
— TK123

3
내 크롬은 노란색을 새로운 입력에 다시 적용합니다. (
— Dustin Silk

제발 하지마 정적 웹 사이트의 경우에만 JS 프레임 워크에서 작동하지 않습니다.
— Akhmedzianov Danilian

26

Firefox에서는 autocomplete = "off / on"속성을 사용하여 양식에서 모든 자동 완성을 비활성화 할 수 있습니다. 마찬가지로 개별 속성 자동 완성은 동일한 속성을 사용하여 설정할 수 있습니다.

<form autocomplete="off" method=".." action="..">  
<input type="text" name="textboxname" autocomplete="off">

Chrome에서 제대로 작동하는지 테스트 할 수 있습니다.


7
autocomplete="off"요즘에는 터닝 에 액세스 할 수 없습니다.
— João

4
불행히도이 솔루션은 더 이상 Chrome에서 작동하지 않습니다.
— henrywright

1
여기에서 실제 문제를 실제로 해결하지 않으므로 권장하지 않습니다. 대신, 사용자는 (아마도) 로그인 정보를 수동으로 입력해야하기 때문에 사용자를 실망 시켜서 새로운 것을 작성하고 있습니다.
— xorinzor

25

입력 요소에 첨부 된 데이터, 첨부 된 핸들러 및 기능뿐만 아니라 자동 완성을 유지하려면 다음 스크립트를 시도하십시오.

if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
    var _interval = window.setInterval(function ()
    {
        var autofills = $('input:-webkit-autofill');
        if (autofills.length > 0)
        {
            window.clearInterval(_interval); // stop polling
            autofills.each(function()
            {
                var clone = $(this).clone(true, true);
                $(this).after(clone).remove();
            });
        }
    }, 20);
}

자동 완성 요소를 찾을 때까지 폴링하고 데이터 및 이벤트를 포함하여 요소를 복제 한 다음 동일한 위치의 DOM에 삽입하고 원본을 제거합니다. 페이지 채우기 후 자동 채우기가 1 초 정도 걸리므로 복제 할 항목이 있으면 폴링을 중지합니다. 이것은 이전 코드 샘플의 변형이지만 더 강력하고 가능한 많은 기능을 그대로 유지합니다.

(Chrome, Firefox 및 IE 8에서 작동하는지 확인했습니다.)


6
이것이 자동 완성 기능을 비활성화하지 않고 작동하는 유일한 솔루션이었습니다.
— Xeroxoid

window.load에서 크롬 자동 채우기로 간격을 설정하지 않아도 될까요?
— Timo Huovinen

2
수백만의 투표권을 가진 사람들보다 자동 완성, 훨씬 더 나은 솔루션을 제거하지 않고 작동합니다.
— 동맹국

다른 솔루션은 나에게 도움이되지 않았으며 심지어 가장 많이지지 된 솔루션조차도 작동하지 않았습니다. @Timo가 위에서 말한 것과 반대되는 문제는 Chrome이 window.load에서 자동으로 채워지지 않는다는 것입니다. 이것이 효과가 있었지만 한 가지 문제점은 -webkit-autofill 요소가 없으면 루프가 계속 실행된다는 것입니다. 이 작업을 수행하기 위해 간격이 필요하지 않습니다. 아마도 50 밀리 초 지연으로 타임 아웃을 설정하면 정상적으로 작동합니다.
— Gavin

16

다음 CSS는 노란색 배경색을 제거하고 선택한 배경색으로 바꿉니다. 자동 채우기를 비활성화하지 않으며 jQuery 또는 Javascript 해킹이 필요하지 않습니다.

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;
}

솔루션 복사에서 : HTML / CSS로 강조 재정의 브라우저 양식 작성 및 입력


필드에 여러 그림자가 적용된 경우 제대로 재생되지 않습니다.
— 내 역량 강화

6

나를 위해 일한 CSS 변경 만 필요합니다.

input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0px 1000px #ffffff inset!important;
}

#ffffff 대신 어떤 색이든 넣을 수 있습니다 .


3

조금 해 키지 만 완벽하게 작동합니다.

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

3

대답의 조합이 나를 위해 일했습니다.

<style>
    input:-webkit-autofill,
    input:-webkit-autofill:hover,
    input:-webkit-autofill:focus,
    input:-webkit-autofill:active {
        -webkit-box-shadow: 0 0 0px 1000px #373e4a inset !important;
           -webkit-text-fill-color: white !important;
   }
</style>

이것은 Chrome 버전 53.0.2785.116 m의 텍스트와 배경 모두에서 나를 위해 일한 유일한 예입니다.
— 유쾌한

2

다음은 Jason MooTools 버전입니다. Safari에서도 수정합니다.

window.addEvent('domready',function() { 
    $('username').focus();

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

        var _interval = window.setInterval(function ()
        {
            var autofills = $$('input:-webkit-autofill');
            if (autofills.length > 0)
            {

                window.clearInterval(_interval); // stop polling
                autofills.each(function(el)
                {
                    var clone = el.clone(true,true).inject(el,'after');;
                    el.dispose();
                });
            }
        }, 20);                                               


    }
});

1
이 스크립트를 사용하지 마십시오. 자동 완성 된 요소가없는 경우 루프는 20 밀리 초로 계속 실행됩니다. 간격이 불필요합니다. window.load 이후에 시간 초과를 약 50 밀리 초로 설정하면 스타일링을 제거 할 시간이 충분합니다.
— Gavin

2

이것은 Safari와 Chrome 모두에서 문제를 해결합니다.

if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
window.setInterval(function(){
    $('input:-webkit-autofill').each(function(){
        var clone = $(this).clone(true, true);
        $(this).after(clone).remove();
    });
}, 20);
}

나를 위해 일하는 것입니다. 그러나 BUG는 여전히 존재하고 있으며 알 수 있듯이 날짜는 고정되어 있지 않습니다. code.google.com/p/chromium/issues/detail?id=46543#c22
— Eduardo M

간격을 지우지 마십시오. 이것은 조잡한 코드이므로 사용하지 마십시오.
— Gavin

1
실제로 이것은 작동하지 않습니다. 입력이 끊임없이 복제되므로 입력에 아무것도 입력 할 수 없습니다. 거의 거기에 ...
— 더스틴 실크

이것을 시도하십시오 var id = window.setInterval (function () {$ ( 'input : -webkit-autofill'). each (function () {var clone = $ (this) .clone (true, true); $ (this) .after (clone) .remove ();});}, 20); $ ( 'input : -webkit-autofill'). focus (function () {window.clearInterval (id);});
— 더스틴 실크

2

이것은 CSS 전용 버전이었습니다.

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

어디 흰색 당신이 원하는 어떤 색깔이 될 수 있습니다.


2

나는 이것을 사용한다.

input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset !important; }
/* You can use color:#color to change the color */

1

태그에이 작은 코드 줄을 삽입하십시오.

autocomplete="off"

그러나 자동 완성 기능을 계속 사용하려는 경우이 필드에서는이 기능이 비활성화되므로 username / email / idname 필드에이를 배치하지 마십시오. 그러나 암호를 자동 완성하지 않기 때문에이 코드를 암호 입력 태그에 넣으면됩니다. 이 수정은 전자 메일 / 사용자 이름 필드에서 색의 힘, matinain 자동 완성 기능을 제거하고 Jquery 또는 javascript와 같은 부피가 큰 해킹을 피할 수 있도록합니다.


1

완전히 제거하려면 이전 답변의 코드를 조정하여 호버링, 활성 및 초점에서도 작동하도록하십시오.

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

1
추가 !important해야하지만 감사합니다. 많이 도움이되었습니다.
— Polochon

0

Alessandro와 동일한 작업을 수행하는 Mootools 솔루션은 다음과 같습니다. 영향을받는 각 입력을 새로운 입력으로 바꿉니다.

if (Browser.chrome) {
    $$('input:-webkit-autofill').each(function(item) {
        var text = item.value;
        var name = item.get('name');
        var newEl = new Element('input');
        newEl.set('name', name);
        newEl.value = text;
        newEl.replaces(item);
    });
}

0

그 솔루션은 어떻습니까?

if ($.browser.webkit) {
    $(function() {
        var inputs = $('input:not(.auto-complete-on)');

        inputs.attr('autocomplete', 'off');

        setTimeout(function() {
            inputs.attr('autocomplete', 'on');
        }, 100);
    });
}

자동 완성 및 자동 완성을 끄고 (노란색 배경이 사라짐) 100 밀리 초 기다린 다음 자동 완성없이 자동 완성 기능을 다시 설정합니다.

자동 입력이 필요한 입력이 있으면 auto-complete-onCSS 클래스 를 제공하십시오 .


0

어떤 해결책도 나를 위해 일하지 않았으며, 사용자 이름과 비밀번호 입력은 여전히 ​​채워지고 노란색 배경이 주어졌습니다.

"자신이 Chrome에서 특정 페이지에서 자동 완성해야하는 내용을 어떻게 결정합니까?"

"입력 ID, 입력 이름을 찾습니까? 양식 ID? 양식 조치?"

사용자 이름과 비밀번호 입력을 실험 한 결과 Chrome에서 자동 완성해야하는 입력란을 찾지 못하는 두 가지 방법 만있었습니다.

1) 비밀번호 입력을 텍스트 입력보다 먼저 설정하십시오. 2) 동일한 이름과 ID를 부여하십시오 ... 또는 이름과 ID가 없습니다.

페이지가로드 된 후, 자바 스크립트를 사용하면 페이지의 입력 순서를 변경하거나 동적으로 이름과 ID를 지정할 수 있습니다 ...

Chrome은 그 결과가 무엇인지 알지 못합니다. 자동 완성은 계속 유지됩니다.

미친 해킹. 그러나 그것은 나를 위해 일하고 있습니다.

크롬 34.0.1847.116, OSX 10.7.5


0

나를 위해 작동하는 유일한 방법은 다음과 같습니다. (jQuery 필요)

$(document).ready(function(e) {
    if ($.browser.webkit) {
        $('#input_id').val(' ').val('');
    }
});

0

암호 필드에 대해이 문제를 해결했습니다.

입력 유형을 비밀번호 대신 텍스트로 설정

jQuery로 입력 텍스트 값을 제거하십시오.

jQuery를 사용하여 입력 유형을 비밀번호로 변환

<input type="text" class="remove-autofill">

$('.js-remove-autofill').val('');    
$('.js-remove-autofill').attr('type', 'password');

Chrome에서 작동하지 않습니다. 필드가 type = password가 되 자마자 Chrome에서 입력합니다.
— mowgli

0

Arjans 솔루션에 대한 업데이트. 값을 변경하려고하면 허용되지 않습니다. 이것은 나를 위해 잘 작동합니다. 입력에 집중하면 노란색으로 바뀝니다. 충분히 가깝습니다.

$(document).ready(function (){
    if(navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 || navigator.userAgent.toLowerCase().indexOf("safari") >= 0){
        var id = window.setInterval(function(){
            $('input:-webkit-autofill').each(function(){
                var clone = $(this).clone(true, true);
                $(this).after(clone).remove();
            });
        }, 20);

        $('input:-webkit-autofill').focus(function(){window.clearInterval(id);});
    }
});

$('input:-webkit-autofill').focus(function(){window.clearInterval(id);});

0

이 코드를 사용해보십시오 :

 	$(function(){
   		setTimeout(function(){
   			$('[name=user_password]').attr('type', 'password');
   		}, 1000);
   	});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<input name="user_password" type="password">


0

요금이 부과되는 namrouti 답변이 정확합니다. 그러나 입력을 선택 하면 배경이 여전히 노란색으로 표시됩니다 . 추가하면 !important문제가 해결됩니다. 당신은 또한 원하는 경우 textarea와 select같은 행동 단지 추가textarea:-webkit-autofill, select:-webkit-autofill

입력 만

input:-webkit-autofill {
    background-color: rgb(250, 255, 189) !important;
}

입력, 선택, 텍스트 영역

input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {
    background-color: rgb(250, 255, 189) !important;
}

0

추가하는 autocomplete="off"것은 자르지 않을 것입니다.

입력 유형 속성을로 변경하십시오 type="search".
Google은 검색 유형의 입력에 자동 완성을 적용하지 않습니다.

시간이 절약되기를 바랍니다.


0

CSS가 적용될 때까지 노란색 깜박임을 피하려면 나쁜 소년의 전환을 다음과 같이 때립니다.

input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0 1000px white inset !important;
    transition: background-color 10s ease-in-out 0s;
}

-1

최종 솔루션 :

$(document).ready(function(){
    var contadorInterval = 0;
    if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
    {
        var _interval = window.setInterval(function ()
        {
            var autofills = $('input:-webkit-autofill');
            if (autofills.length > 0)
            {
                window.clearInterval(_interval); // stop polling
                autofills.each(function()
                {
                    var clone = $(this).clone(true, true);
                    $(this).after(clone).remove();
                    setTimeout(function(){
//                        $("#User").val('');
                        $("#Password").val('');
                    },10);
                });
            }
            contadorInterval++;
            if(contadorInterval > 50) window.clearInterval(_interval); // stop polling
        }, 20);
    }else{
        setTimeout(function(){
//            $("#User").val('');
            $("#Password").val('');
        },100);
    }
});


-5

같은 질문으로 자신을 발견했습니다. 이것은 나를 위해 작동합니다 :

form :focus {
  outline: none;
}

3
자동 완성 된 입력의 배경색이 아니라 클릭하면 상자의 윤곽이 나타납니다
— Claire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.