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文本框,它應該模糊自身)

我打過電話使用Chrome控制檯的功能,它的工作原理:

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解釋的網頁代碼和內容腳本代碼,並顯示上下文之間的差異如何在頁面上下文中運行代碼。