Javascript 如何从Chrome扩展调用OnBlur方法
我正在开发一个Chrome扩展,它只是使所有者帐户文本框与计划帐户文本框相同。文本框在原始网站上有onblur方法,在调用许多函数后,通过一种迂回的方式将数据保存到服务器 当我更改一个文本框时,我会设置另一个文本框的值。这在视觉上很有效。但是数据并没有保存到网络中,因为我没有点击文本框。(OwnerAccount已更新,计划帐户未更新) 但现在是时候将值保存到服务器了。我认为简单地模糊调度帐户将调用tbSchedulingAccount的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
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 && event.keyCode == 13){
MASSIVE PROPRIETARY FUNCTION" style="width:200px;">
因此,我的主要问题是:
- 当另一个文本框失去焦点时,我可以从扩展名调用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();
}