Javascript 如何从Chrome扩展调用OnBlur方法

Javascript 如何从Chrome扩展调用OnBlur方法,javascript,google-chrome,google-chrome-extension,textbox,onblur,Javascript,Google Chrome,Google Chrome Extension,Textbox,Onblur,我正在开发一个Chrome扩展,它只是使所有者帐户文本框与计划帐户文本框相同。文本框在原始网站上有onblur方法,在调用许多函数后,通过一种迂回的方式将数据保存到服务器 当我更改一个文本框时,我会设置另一个文本框的值。这在视觉上很有效。但是数据并没有保存到网络中,因为我没有点击文本框。(OwnerAccount已更新,计划帐户未更新) 但现在是时候将值保存到服务器了。我认为简单地模糊调度帐户将调用tbSchedulingAccount的onblur()方法。没有骰子 tbSchedulingA

我正在开发一个Chrome扩展,它只是使所有者帐户文本框与计划帐户文本框相同。文本框在原始网站上有onblur方法,在调用许多函数后,通过一种迂回的方式将数据保存到服务器

当我更改一个文本框时,我会设置另一个文本框的值。这在视觉上很有效。但是数据并没有保存到网络中,因为我没有点击文本框。(OwnerAccount已更新,计划帐户未更新)

但现在是时候将值保存到服务器了。我认为简单地模糊调度帐户将调用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>

}
var tbOwnerAccount=document.getElementById(“ctl00\u ContentPlaceHolder1\u txtOwnerAccountNumber”);
tbOwnerAccount.onblur=更新计划;
函数updateSchedule(){
var tbOwnerAccount=document.getElementById(“ctl00\u内容占位符1\u txtOwnerAccountNumber”);
var tbSchedulingAccount=document.getElementById(“ctl00\u ContentPlaceHolder1\u txtSchedulingAccountNumber”);
控制台日志(“已启动”);

尝试调度
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();
}
请参阅,其中解释了页面代码和内容脚本代码的上下文之间的差异,并说明了如何在页面上下文中运行代码

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

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