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문제가 해결됩니다. 당신은 또한 원하는 경우 textareaselect같은 행동 단지 추가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.