2016-11-23 1 views
0

페이지가 있는데 로그인/비밀번호 입력란을 채우고 "로그인"제출 버튼을 클릭하고 싶습니다. 나는 모든 세부 사항을 here에 언급했다.Angularjs 기반 페이지에서 자동 채우기가 작동하지 않습니다.

페이지가 AngularJS를 사용하고 있습니다.

로그인/암호 필드가 감지되지 않아 작동하지 않습니다. 나는 많은 방법을 시도했습니다. Using page's angular JS in chrome extension

예를 들면. 나는 (Trigger a keypress/keydown/keyup event in JS/jQuery? 같은 및 많은 다른 사람)이 코드를 시도했지만 아무도 페이지가 자동 완성 된 로그인과 암호를 감지 할 수 없습니다 :

$("#loginEmailMobile").val(user_selections.freecharge_details.login).trigger('input').keydown().keyup(); 
     $("input#clientpassword").val(user_selections.freecharge_details.password).trigger('input').keydown().keyup(); 

또 다른 원유 방법은 배경 페이지에서하여 AngularJS와 라이브러리를 차단하는 것입니다 및 그것을 작동하게하십시오. 그러나 이것 역시 효과가 없습니다.

이 페이지에 대해 양식 자동 완성을 만들려면 어떻게해야합니까?

+1

귀하의 질문에 대답하기 위해 [MCVE] (http://stackoverflow.com/help/mcve)가 필요합니다 – maurycy

+1

[mcve]가 필요하다는 이유는 * 우리가 도움을 드리고자하는 * 이유입니다. 문제를 복제하는 데 필요한 코드를 다시 만들 필요가 없다면 ** 도움이 될 것입니다. 이미 가지고있는 코드입니다. 그러므로, 우리를 도와 드릴 수 있도록 도와 주시고 그러한 질문에 대한 문제를 반복하는 * 완전한 * [mcve]를 제공해주십시오. [mcve]가 없으면 당신을 돕기 시작하는 데 필요한 노력의 양이 ** 많이 ** 높기 때문에 * 당신을 도울 수있는 사람들의 수를 상당히 줄일 수 있습니다. 우리가 여분의 노력을 기울이더라도 문제의 중요한 부분을 추측해야합니다. – Makyen

+0

당신은 시도 했습니까 [this] (http://stackoverflow.com/questions/5712796/html-login-form-provide-username-autofill-password) – George

답변

1

입력 내용이 변경된 각도를 기록하려면 필드 내용을 설정 한 후 수동으로 input 이벤트를 트리거해야합니다.

코드는 대략적으로 번역하는 것 : 크롬의 콘솔에 붙여 넣을 때

document.getElementById('loginEmailMobile').value = '[email protected]' 
document.getElementById('loginEmailMobile').dispatchEvent(new Event('input')) 
document.getElementById('clientpassword').value = 'password' 
document.getElementById('clientpassword').dispatchEvent(new Event('input')) 
document.getElementById('signInButton').dispatchEvent(new Event('click')) 

이 코드는 폼 제출 트리거합니다. 대신 change 이벤트도 사용할 수있을 것입니다.

크롬 확장 프로그램을 제작 중이므로이 코드를 페이지에 삽입해야합니다. manifest.json"content_scripts" 키를 지정하여 양식을 트리거하는 로직이 포함 된 스크립트 inject.js이 방문하는 모든 페이지에 삽입되지 않도록 사이트의 URL이 표시됩니다 (예 :

).
"content_scripts": [ 
    { 
     "matches": ["https://login.freecharge.in/*"], 
     "js": ["js/inject.js"] 
    } 
], 

예를 들어 확장 프로그램의 팝업 스크립트에서 chrome.tabs API's executeScript method을 사용하여 삽입 한 함수를 inject.js으로 호출 할 수 있습니다.

위의 코드를 executeScript으로 직접 삽입하고 스크립트 삽입을 모두 건너 뛸 수도 있지만 코드가 길어질수록 어딘가에서 적절한 js 파일에 모든 것을 가지고이 API로 함수를 호출 할 수 있습니다.

+0

콘텐츠 스크립트에서 동일한 작업을 수행 할 수없는 이유를 모르겠습니다. – user5858

+0

jQuery의'trigger' 함수로 시도한 것인지 모르겠지만 React 나 Angular와 같은 프레임 워크를 사용할 때'dispatchEvent'가있는 네이티브 이벤트를 사용하면 더 잘 작동하는 경우가 있습니다. – beeb

관련 문제