1

소유자 계정 텍스트 상자를 예약 계정 텍스트 상자와 동일하게 만드는 Chrome 확장 프로그램에서 작업하고 있습니다. 텍스트 상자에는 원본 웹 사이트의 onblur 메서드가 있으며 많은 함수를 호출 한 후 서버에 데이터를 저장합니다.Chrome 확장 프로그램에서 OnBlur 메소드 호출 방법

하나의 텍스트 상자를 변경하면 다른 텍스트 상자의 값을 설정합니다. 그것은 시각적으로 효과가 있습니다. 그러나 실제로 클릭하지 않는 텍스트 상자의 데이터는 네트워크에 저장되지 않습니다. (OwnerAccount가 업데이트되었으므로 예약 계정이 아닙니다.)

var tbOwnerAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber"); 
var tbSchedulingAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtSchedulingAccountNumber"); 

tbSchedulingAccount.value = tbOwnerAccount.value; 

이제 서버에 값을 저장해야합니다. 나는 단순히 일정 계정을 흐리게하는 것이 tbSchedulingAccount의 onblur() 메서드를 호출한다고 생각했습니다. 주사위가 없다.

tbSchedulingAccount.blur(); 

나는 또한 시도 :

tbSchedulingAccount.focus(); 
tbSchedulingAccount.select(); 
tbSchedulingAccount.value = tbOwnerAccount.value; 

(와 끝에 흐림없이 - 나는 tbSchedulingAccount 텍스트 상자에 커서를 얻을 수 있습니다, 그래서 만약 사용자가 자연스럽게 곳을 클릭합니다, 그것은해야) 자체에 내가 크롬 콘솔을 사용하여 함수를 호출하려고

을 흐리게하고, 그것을 작동 :

tbSchedulingAccount.onblur(); 

하지만 실제로 블러 아웃하고 tbSchedulingAccount.blur()를 사용하여 함수를 호출 할 수는 없습니다.

<input name="ctl00$ContentPlaceHolder1$txtSchedulingAccountNumber" 
type="text" maxlength="25" id="ctl00_ContentPlaceHolder1_txtSchedulingAccountNumber" 
tabindex="9" class="textbox" onblur=" MASSIVE PROPRIETARY FUNCTION" 
onkeydown="javascript:if(event != null &amp;&amp; event.keyCode == 13){ 
MASSIVE PROPRIETARY FUNCTION" style="width:200px;"> 

그래서, 내 주요 질문은 다음과 같습니다 : 그것은 어떤 도움이 있다면

, 여기 요소는 내가 흐리게하기 위해 노력하고있어입니다

  • 내가 확장에서 위해 onblur 함수를 호출 할 때 다른 텍스트 상자에 포커스가 없습니까?

(내가) (tbOwnerAccount에서 함수를 호출하려면, 텍스트 상자를주의해야하는 것은 원래의 웹 사이트에 위해 onblur를 가지 내가 할 수는 서버에 저장하지 않습니다 또는하지 엉망)

여기에 지금까지 내 모든 코드를 : 당신이 제공 할 수있는 어떤 도움

var tbOwnerAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber"); 
tbOwnerAccount.onblur = updateSchedule; 

function updateSchedule(){ 
    var tbOwnerAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber"); 
    var tbSchedulingAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtSchedulingAccountNumber"); 

    console.log("Fired"); 

    <CODE FOR THE ORIGINAL WEBSITE'S .ONBLUR ON tbSchedulingAccount TO FIRE> 

} 

감사합니다!

답변

1

blur 이벤트를 전달하십시오 :

tbOwnerAccount.dispatchEvent(new Event('blur')) 

또는 주입 된 DOM 스크립트에 직접 onblur()을 실행

runDOMscript(function() { 
    document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber").onblur(); 
}); 

function runDOMscript(fn) { 
    var script = document.head.appendChild(document.createElement('script')); 
    script.text = '(' + fn + ')()'; 
    script.remove(); 
} 

Inject code in a page using a Content script을 페이지의 코드와 콘텐츠 스크립트 코드와 쇼의 맥락 사이의 차이점에 대해 설명 페이지 컨텍스트에서 코드를 실행하는 방법.

관련 문제